clear history id (#1263)

* clear history id

* fix nu
This commit is contained in:
Conrad Ludgate 2023-10-08 17:15:14 +01:00 committed by GitHub
parent 1735be05d7
commit 38172f3501
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
17 changed files with 55 additions and 49 deletions

View file

@ -70,8 +70,8 @@ pub fn current_context() -> Context {
#[async_trait]
pub trait Database: Send + Sync + 'static {
async fn save(&mut self, h: &History) -> Result<()>;
async fn save_bulk(&mut self, h: &[History]) -> Result<()>;
async fn save(&self, h: &History) -> Result<()>;
async fn save_bulk(&self, h: &[History]) -> Result<()>;
async fn load(&self, id: &str) -> Result<Option<History>>;
async fn list(
@ -193,7 +193,7 @@ impl Sqlite {
#[async_trait]
impl Database for Sqlite {
async fn save(&mut self, h: &History) -> Result<()> {
async fn save(&self, h: &History) -> Result<()> {
debug!("saving history to sqlite");
let mut tx = self.pool.begin().await?;
Self::save_raw(&mut tx, h).await?;
@ -202,7 +202,7 @@ impl Database for Sqlite {
Ok(())
}
async fn save_bulk(&mut self, h: &[History]) -> Result<()> {
async fn save_bulk(&self, h: &[History]) -> Result<()> {
debug!("saving history to sqlite");
let mut tx = self.pool.begin().await?;

View file

@ -37,7 +37,7 @@ async fn sync_download(
key: &Key,
force: bool,
client: &api_client::Client<'_>,
db: &mut (impl Database + Send),
db: &(impl Database + Send),
) -> Result<(i64, i64)> {
debug!("starting sync download");
@ -127,7 +127,7 @@ async fn sync_upload(
key: &Key,
_force: bool,
client: &api_client::Client<'_>,
db: &mut (impl Database + Send),
db: &(impl Database + Send),
) -> Result<()> {
debug!("starting sync upload");
@ -188,7 +188,7 @@ async fn sync_upload(
Ok(())
}
pub async fn sync(settings: &Settings, force: bool, db: &mut (impl Database + Send)) -> Result<()> {
pub async fn sync(settings: &Settings, force: bool, db: &(impl Database + Send)) -> Result<()> {
let client = api_client::Client::new(
&settings.sync_address,
&settings.session_token,

View file

@ -18,7 +18,7 @@ mod kv;
mod search;
mod stats;
#[derive(Subcommand)]
#[derive(Subcommand, Debug)]
#[command(infer_subcommands = true)]
pub enum Cmd {
/// Manipulate shell history
@ -54,22 +54,24 @@ impl Cmd {
.parse_env("ATUIN_LOG")
.init();
tracing::trace!(command = ?self, "client command");
let mut settings = Settings::new().wrap_err("could not load client settings")?;
let db_path = PathBuf::from(settings.db_path.as_str());
let record_store_path = PathBuf::from(settings.record_store_path.as_str());
let mut db = Sqlite::new(db_path).await?;
let db = Sqlite::new(db_path).await?;
let mut store = SqliteStore::new(record_store_path).await?;
match self {
Self::History(history) => history.run(&settings, &mut db).await,
Self::Import(import) => import.run(&mut db).await,
Self::Stats(stats) => stats.run(&mut db, &settings).await,
Self::History(history) => history.run(&settings, &db).await,
Self::Import(import) => import.run(&db).await,
Self::Stats(stats) => stats.run(&db, &settings).await,
Self::Search(search) => search.run(db, &mut settings).await,
#[cfg(feature = "sync")]
Self::Sync(sync) => sync.run(settings, &mut db, &mut store).await,
Self::Sync(sync) => sync.run(settings, &db, &mut store).await,
#[cfg(feature = "sync")]
Self::Account(account) => account.run(settings).await,

View file

@ -8,13 +8,13 @@ pub mod login;
pub mod logout;
pub mod register;
#[derive(Args)]
#[derive(Args, Debug)]
pub struct Cmd {
#[command(subcommand)]
command: Commands,
}
#[derive(Subcommand)]
#[derive(Subcommand, Debug)]
pub enum Commands {
/// Login to the configured server
Login(login::Cmd),

View file

@ -12,7 +12,7 @@ use atuin_client::{
use atuin_common::api::LoginRequest;
use rpassword::prompt_password;
#[derive(Parser)]
#[derive(Parser, Debug)]
pub struct Cmd {
#[clap(long, short)]
pub username: Option<String>,

View file

@ -4,7 +4,7 @@ use tokio::{fs::File, io::AsyncWriteExt};
use atuin_client::{api_client, settings::Settings};
#[derive(Parser)]
#[derive(Parser, Debug)]
pub struct Cmd {
#[clap(long, short)]
pub username: Option<String>,

View file

@ -23,7 +23,7 @@ use time::{macros::format_description, OffsetDateTime};
use super::search::format_duration_into;
#[derive(Subcommand)]
#[derive(Subcommand, Debug)]
#[command(infer_subcommands = true)]
pub enum Cmd {
/// Begins a new command in the history
@ -239,7 +239,7 @@ fn parse_fmt(format: &str) -> ParsedFmt {
impl Cmd {
#[allow(clippy::too_many_lines, clippy::cast_possible_truncation)]
async fn handle_start(
db: &mut impl Database,
db: &impl Database,
settings: &Settings,
command: &[String],
) -> Result<()> {
@ -268,7 +268,7 @@ impl Cmd {
}
async fn handle_end(
db: &mut impl Database,
db: &impl Database,
settings: &Settings,
id: &str,
exit: i64,
@ -313,7 +313,7 @@ impl Cmd {
#[allow(clippy::too_many_arguments)]
#[allow(clippy::fn_params_excessive_bools)]
async fn handle_list(
db: &mut impl Database,
db: &impl Database,
settings: &Settings,
context: atuin_client::database::Context,
session: bool,
@ -361,7 +361,7 @@ impl Cmd {
Ok(())
}
pub async fn run(self, settings: &Settings, db: &mut impl Database) -> Result<()> {
pub async fn run(self, settings: &Settings, db: &impl Database) -> Result<()> {
let context = current_context();
match self {
@ -377,7 +377,6 @@ impl Cmd {
format,
} => {
let mode = ListMode::from_flags(human, cmd_only);
let reverse = reverse;
Self::handle_list(
db, settings, context, session, cwd, mode, format, false, print0, reverse,
)

View file

@ -14,7 +14,7 @@ use atuin_client::{
},
};
#[derive(Parser)]
#[derive(Parser, Debug)]
#[command(infer_subcommands = true)]
pub enum Cmd {
/// Import history for the current shell
@ -39,7 +39,7 @@ pub enum Cmd {
const BATCH_SIZE: usize = 100;
impl Cmd {
pub async fn run<DB: Database>(&self, db: &mut DB) -> Result<()> {
pub async fn run<DB: Database>(&self, db: &DB) -> Result<()> {
println!(" Atuin ");
println!("======================");
println!(" \u{1f30d} ");
@ -104,11 +104,11 @@ impl Cmd {
pub struct HistoryImporter<'db, DB: Database> {
pb: ProgressBar,
buf: Vec<History>,
db: &'db mut DB,
db: &'db DB,
}
impl<'db, DB: Database> HistoryImporter<'db, DB> {
fn new(db: &'db mut DB, len: usize) -> Self {
fn new(db: &'db DB, len: usize) -> Self {
Self {
pb: ProgressBar::new(len as u64),
buf: Vec::with_capacity(BATCH_SIZE),
@ -138,7 +138,7 @@ impl<'db, DB: Database> Loader for HistoryImporter<'db, DB> {
}
}
async fn import<I: Importer + Send, DB: Database>(db: &mut DB) -> Result<()> {
async fn import<I: Importer + Send, DB: Database>(db: &DB) -> Result<()> {
println!("Importing history from {}", I::NAME);
let mut importer = I::new().await?;

View file

@ -3,7 +3,7 @@ use eyre::{Context, Result};
use atuin_client::{encryption, kv::KvStore, record::store::Store, settings::Settings};
#[derive(Subcommand)]
#[derive(Subcommand, Debug)]
#[command(infer_subcommands = true)]
pub enum Cmd {
// atuin kv set foo bar bar

View file

@ -19,7 +19,7 @@ mod interactive;
pub use duration::{format_duration, format_duration_into};
#[allow(clippy::struct_excessive_bools)]
#[derive(Parser)]
#[derive(Parser, Debug)]
pub struct Cmd {
/// Filter search result by directory
#[arg(long, short)]
@ -103,7 +103,7 @@ pub struct Cmd {
}
impl Cmd {
pub async fn run(self, mut db: impl Database, settings: &mut Settings) -> Result<()> {
pub async fn run(self, db: impl Database, settings: &mut Settings) -> Result<()> {
if self.delete && self.query.is_empty() {
println!("Please specify a query to match the items you wish to delete. If you wish to delete all history, pass --delete-it-all");
return Ok(());
@ -147,7 +147,7 @@ impl Cmd {
};
let mut entries =
run_non_interactive(settings, opt_filter.clone(), &self.query, &mut db).await?;
run_non_interactive(settings, opt_filter.clone(), &self.query, &db).await?;
if entries.is_empty() {
std::process::exit(1)
@ -165,8 +165,7 @@ impl Cmd {
}
entries =
run_non_interactive(settings, opt_filter.clone(), &self.query, &mut db)
.await?;
run_non_interactive(settings, opt_filter.clone(), &self.query, &db).await?;
}
} else {
super::history::print_list(
@ -189,7 +188,7 @@ async fn run_non_interactive(
settings: &Settings,
filter_options: OptFilters,
query: &[String],
db: &mut impl Database,
db: &impl Database,
) -> Result<Vec<History>> {
let dir = if filter_options.cwd.as_deref() == Some(".") {
Some(utils::get_current_dir())

View file

@ -12,7 +12,7 @@ use atuin_client::{
};
use time::{Duration, OffsetDateTime, Time};
#[derive(Parser)]
#[derive(Parser, Debug)]
#[command(infer_subcommands = true)]
pub struct Cmd {
/// compute statistics for the specified period, leave blank for statistics since the beginning
@ -73,7 +73,7 @@ fn compute_stats(history: &[History], count: usize) -> Result<()> {
}
impl Cmd {
pub async fn run(&self, db: &mut impl Database, settings: &Settings) -> Result<()> {
pub async fn run(&self, db: &impl Database, settings: &Settings) -> Result<()> {
let context = current_context();
let words = if self.period.is_empty() {
String::from("all")

View file

@ -11,7 +11,7 @@ mod status;
use crate::command::client::account;
#[derive(Subcommand)]
#[derive(Subcommand, Debug)]
#[command(infer_subcommands = true)]
pub enum Cmd {
/// Sync with the configured server
@ -44,7 +44,7 @@ impl Cmd {
pub async fn run(
self,
settings: Settings,
db: &mut impl Database,
db: &impl Database,
store: &mut (impl Store + Send + Sync),
) -> Result<()> {
match self {
@ -74,7 +74,7 @@ impl Cmd {
async fn run(
settings: &Settings,
force: bool,
db: &mut impl Database,
db: &impl Database,
store: &mut (impl Store + Send + Sync),
) -> Result<()> {
let (diff, remote_index) = sync::diff(settings, store).await?;

View file

@ -6,7 +6,7 @@ use eyre::{Context, Result};
use atuin_server::{launch, Settings};
#[derive(Parser)]
#[derive(Parser, Debug)]
#[clap(infer_subcommands = true)]
pub enum Cmd {
/// Start the server
@ -29,6 +29,8 @@ impl Cmd {
.with(EnvFilter::from_default_env())
.init();
tracing::trace!(command = ?self, "server command");
let settings = Settings::new().wrap_err("could not load server settings")?;
match self {

View file

@ -12,12 +12,13 @@ _atuin_precmd() {
[[ -z "${ATUIN_HISTORY_ID}" ]] && return
(RUST_LOG=error atuin history end --exit "${EXIT}" -- "${ATUIN_HISTORY_ID}" &) >/dev/null 2>&1
(ATUIN_LOG=error atuin history end --exit "${EXIT}" -- "${ATUIN_HISTORY_ID}" &) >/dev/null 2>&1
export ATUIN_HISTORY_ID=""
}
__atuin_history() {
# shellcheck disable=SC2048,SC2086
HISTORY="$(RUST_LOG=error atuin search $* -i -- "${READLINE_LINE}" 3>&1 1>&2 2>&3)"
HISTORY="$(ATUIN_LOG=error atuin search $* -i -- "${READLINE_LINE}" 3>&1 1>&2 2>&3)"
READLINE_LINE=${HISTORY}
READLINE_POINT=${#READLINE_LINE}

View file

@ -9,13 +9,14 @@ end
function _atuin_postexec --on-event fish_postexec
set s $status
if test -n "$ATUIN_HISTORY_ID"
RUST_LOG=error atuin history end --exit $s -- $ATUIN_HISTORY_ID &>/dev/null &
ATUIN_LOG=error atuin history end --exit $s -- $ATUIN_HISTORY_ID &>/dev/null &
disown
end
set --erase ATUIN_HISTORY_ID
end
function _atuin_search
set h (RUST_LOG=error atuin search $argv -i -- (commandline -b) 3>&1 1>&2 2>&3)
set h (ATUIN_LOG=error atuin search $argv -i -- (commandline -b) 3>&1 1>&2 2>&3)
commandline -f repaint
if test -n "$h"
commandline -r "$h"

View file

@ -19,16 +19,17 @@ let _atuin_pre_prompt = {||
if 'ATUIN_HISTORY_ID' not-in $env {
return
}
with-env { RUST_LOG: error } {
with-env { ATUIN_LOG: error } {
atuin history end $'--exit=($last_exit)' -- $env.ATUIN_HISTORY_ID | null
}
hide-env ATUIN_HISTORY_ID
}
def _atuin_search_cmd [...flags: string] {
[
$ATUIN_KEYBINDING_TOKEN,
([
`commandline (RUST_LOG=error run-external --redirect-stderr atuin search`,
`commandline (ATUIN_LOG=error run-external --redirect-stderr atuin search`,
($flags | append [--interactive, --] | each {|e| $'"($e)"'}),
`(commandline) | complete | $in.stderr | str substring ..-1)`,
] | flatten | str join ' '),

View file

@ -23,7 +23,8 @@ _atuin_precmd() {
[[ -z "${ATUIN_HISTORY_ID:-}" ]] && return
(RUST_LOG=error atuin history end --exit $EXIT -- $ATUIN_HISTORY_ID &) >/dev/null 2>&1
(ATUIN_LOG=error atuin history end --exit $EXIT -- $ATUIN_HISTORY_ID &) >/dev/null 2>&1
export ATUIN_HISTORY_ID=""
}
_atuin_search() {
@ -33,7 +34,7 @@ _atuin_search() {
# swap stderr and stdout, so that the tui stuff works
# TODO: not this
# shellcheck disable=SC2048
output=$(RUST_LOG=error atuin search $* -i -- $BUFFER 3>&1 1>&2 2>&3)
output=$(ATUIN_LOG=error atuin search $* -i -- $BUFFER 3>&1 1>&2 2>&3)
if [[ -n $output ]]; then
RBUFFER=""