summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorConrad Ludgate <conradludgate@gmail.com>2023-10-08 17:15:14 +0100
committerGitHub <noreply@github.com>2023-10-08 16:15:14 +0000
commit38172f35016459b7765dfacdbe1f8225fca59e50 (patch)
tree572ba5b5983ad672f23e1ccbf8ae59a7d7242bef
parent1735be05d71ec21ffb8648866fca83e210cfe31a (diff)
clear history id (#1263)
* clear history id * fix nu
-rw-r--r--atuin-client/src/database.rs8
-rw-r--r--atuin-client/src/sync.rs6
-rw-r--r--atuin/src/command/client.rs14
-rw-r--r--atuin/src/command/client/account.rs4
-rw-r--r--atuin/src/command/client/account/login.rs2
-rw-r--r--atuin/src/command/client/account/register.rs2
-rw-r--r--atuin/src/command/client/history.rs11
-rw-r--r--atuin/src/command/client/import.rs10
-rw-r--r--atuin/src/command/client/kv.rs2
-rw-r--r--atuin/src/command/client/search.rs11
-rw-r--r--atuin/src/command/client/stats.rs4
-rw-r--r--atuin/src/command/client/sync.rs6
-rw-r--r--atuin/src/command/server.rs4
-rw-r--r--atuin/src/shell/atuin.bash5
-rw-r--r--atuin/src/shell/atuin.fish5
-rw-r--r--atuin/src/shell/atuin.nu5
-rw-r--r--atuin/src/shell/atuin.zsh5
17 files changed, 55 insertions, 49 deletions
diff --git a/atuin-client/src/database.rs b/atuin-client/src/database.rs
index c75a32ce..a7be9436 100644
--- a/atuin-client/src/database.rs
+++ b/atuin-client/src/database.rs
@@ -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?;
diff --git a/atuin-client/src/sync.rs b/atuin-client/src/sync.rs
index c2fc75f9..5f612c71 100644
--- a/atuin-client/src/sync.rs
+++ b/atuin-client/src/sync.rs
@@ -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,
diff --git a/atuin/src/command/client.rs b/atuin/src/command/client.rs
index a4910f1e..7124ca99 100644
--- a/atuin/src/command/client.rs
+++ b/atuin/src/command/client.rs
@@ -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,
diff --git a/atuin/src/command/client/account.rs b/atuin/src/command/client/account.rs
index 2a4a0772..657552fb 100644
--- a/atuin/src/command/client/account.rs
+++ b/atuin/src/command/client/account.rs
@@ -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),
diff --git a/atuin/src/command/client/account/login.rs b/atuin/src/command/client/account/login.rs
index 9bfe0b40..24f54ec2 100644
--- a/atuin/src/command/client/account/login.rs
+++ b/atuin/src/command/client/account/login.rs
@@ -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>,
diff --git a/atuin/src/command/client/account/register.rs b/atuin/src/command/client/account/register.rs
index d306a141..f8c0eafc 100644
--- a/atuin/src/command/client/account/register.rs
+++ b/atuin/src/command/client/account/register.rs
@@ -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>,
diff --git a/atuin/src/command/client/history.rs b/atuin/src/command/client/history.rs
index c9e0dd03..8cf35d5b 100644
--- a/atuin/src/command/client/history.rs
+++ b/atuin/src/command/client/history.rs
@@ -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,
)
diff --git a/atuin/src/command/client/import.rs b/atuin/src/command/client/import.rs
index 7abc3d44..fbb63818 100644
--- a/atuin/src/command/client/import.rs
+++ b/atuin/src/command/client/import.rs
@@ -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?;
diff --git a/atuin/src/command/client/kv.rs b/atuin/src/command/client/kv.rs
index d9a22760..48ebe9e5 100644
--- a/atuin/src/command/client/kv.rs
+++ b/atuin/src/command/client/kv.rs
@@ -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
diff --git a/atuin/src/command/client/search.rs b/atuin/src/command/client/search.rs
index e5e4a9a3..2297d81b 100644
--- a/atuin/src/command/client/search.rs
+++ b/atuin/src/command/client/search.rs
@@ -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())
diff --git a/atuin/src/command/client/stats.rs b/atuin/src/command/client/stats.rs
index 08145027..625c6beb 100644
--- a/atuin/src/command/client/stats.rs
+++ b/atuin/src/command/client/stats.rs
@@ -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")
diff --git a/atuin/src/command/client/sync.rs b/atuin/src/command/client/sync.rs
index d8c0a58b..50a1d835 100644
--- a/atuin/src/command/client/sync.rs
+++ b/atuin/src/command/client/sync.rs
@@ -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?;
diff --git a/atuin/src/command/server.rs b/atuin/src/command/server.rs
index c65cb505..c02c4007 100644
--- a/atuin/src/command/server.rs
+++ b/atuin/src/command/server.rs
@@ -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 {
diff --git a/atuin/src/shell/atuin.bash b/atuin/src/shell/atuin.bash
index fd78ee3a..7b862bf7 100644
--- a/atuin/src/shell/atuin.bash
+++ b/atuin/src/shell/atuin.bash
@@ -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}
diff --git a/atuin/src/shell/atuin.fish b/atuin/src/shell/atuin.fish
index 344c7d19..5b7b64e8 100644
--- a/atuin/src/shell/atuin.fish
+++ b/atuin/src/shell/atuin.fish
@@ -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"
diff --git a/atuin/src/shell/atuin.nu b/atuin/src/shell/atuin.nu
index 673e99d0..1361bda6 100644
--- a/atuin/src/shell/atuin.nu
+++ b/atuin/src/shell/atuin.nu
@@ -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 ' '),
diff --git a/atuin/src/shell/atuin.zsh b/atuin/src/shell/atuin.zsh
index 2ea4f4d7..edea0c80 100644
--- a/atuin/src/shell/atuin.zsh
+++ b/atuin/src/shell/atuin.zsh
@@ -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=""