Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

clear history id #1263

Merged
merged 3 commits into from
Oct 8, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
8 changes: 4 additions & 4 deletions atuin-client/src/database.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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(
Expand Down Expand Up @@ -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?;
Expand All @@ -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?;
Expand Down
6 changes: 3 additions & 3 deletions atuin-client/src/sync.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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");

Expand Down Expand Up @@ -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");

Expand Down Expand Up @@ -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,
Expand Down
14 changes: 8 additions & 6 deletions atuin/src/command/client.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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,
Expand Down
4 changes: 2 additions & 2 deletions atuin/src/command/client/account.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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),
Expand Down
2 changes: 1 addition & 1 deletion atuin/src/command/client/account/login.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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>,
Expand Down
2 changes: 1 addition & 1 deletion atuin/src/command/client/account/register.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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>,
Expand Down
11 changes: 5 additions & 6 deletions atuin/src/command/client/history.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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<()> {
Expand Down Expand Up @@ -268,7 +268,7 @@ impl Cmd {
}

async fn handle_end(
db: &mut impl Database,
db: &impl Database,
settings: &Settings,
id: &str,
exit: i64,
Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -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 {
Expand All @@ -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,
)
Expand Down
10 changes: 5 additions & 5 deletions atuin/src/command/client/import.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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} ");
Expand Down Expand Up @@ -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),
Expand Down Expand Up @@ -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?;
Expand Down
2 changes: 1 addition & 1 deletion atuin/src/command/client/kv.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
11 changes: 5 additions & 6 deletions atuin/src/command/client/search.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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)]
Expand Down Expand Up @@ -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(());
Expand Down Expand Up @@ -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)
Expand All @@ -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(
Expand All @@ -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())
Expand Down
4 changes: 2 additions & 2 deletions atuin/src/command/client/stats.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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")
Expand Down
6 changes: 3 additions & 3 deletions atuin/src/command/client/sync.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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 {
Expand Down Expand Up @@ -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?;
Expand Down
4 changes: 3 additions & 1 deletion atuin/src/command/server.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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 {
Expand Down
5 changes: 3 additions & 2 deletions atuin/src/shell/atuin.bash
Original file line number Diff line number Diff line change
Expand Up @@ -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}
Expand Down
5 changes: 3 additions & 2 deletions atuin/src/shell/atuin.fish
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
5 changes: 3 additions & 2 deletions atuin/src/shell/atuin.nu
Original file line number Diff line number Diff line change
Expand Up @@ -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 ' '),
Expand Down