aboutsummaryrefslogtreecommitdiffstats
path: root/src/command/client/search.rs
diff options
context:
space:
mode:
authorPatrick Decat <pdecat@gmail.com>2022-12-18 19:26:09 +0100
committerGitHub <noreply@github.com>2022-12-18 18:26:09 +0000
commited394afa82ef919937521e5ce72fc467cec203f9 (patch)
treebc7d078684089e71d0d96f22328c5c266ad22d28 /src/command/client/search.rs
parentBump debian from bullseye-20221024-slim to bullseye-20221205-slim (#638) (diff)
downloadatuin-ed394afa82ef919937521e5ce72fc467cec203f9.zip
Allow overriding filter and search modes from CLI (#635)
* Allow overriding filter and search modes from CLI arguments * Use session filter mode for bash up key binding * We precisely do not want to add quotes here so that all arguments are properly passed * Add --shell-up-key-binding hidden command argument and filter_mode_shell_up_key_binding configuration option to allow customizing the filter mode used when atuin is invoked from a shell up-key binding * Correct up binding for zsh Co-authored-by: Ellie Huxtable <ellie@elliehuxtable.com>
Diffstat (limited to 'src/command/client/search.rs')
-rw-r--r--src/command/client/search.rs27
1 files changed, 25 insertions, 2 deletions
diff --git a/src/command/client/search.rs b/src/command/client/search.rs
index 456846d4..e528576d 100644
--- a/src/command/client/search.rs
+++ b/src/command/client/search.rs
@@ -3,7 +3,10 @@ use clap::Parser;
use eyre::Result;
use atuin_client::{
- database::current_context, database::Database, history::History, settings::Settings,
+ database::current_context,
+ database::Database,
+ history::History,
+ settings::{FilterMode, SearchMode, Settings},
};
use super::history::ListMode;
@@ -15,6 +18,7 @@ mod history_list;
mod interactive;
pub use duration::format_duration;
+#[allow(clippy::struct_excessive_bools)]
#[derive(Parser)]
pub struct Cmd {
/// Filter search result by directory
@@ -49,6 +53,18 @@ pub struct Cmd {
#[arg(long, short)]
interactive: bool,
+ /// Allow overriding filter mode over config
+ #[arg(long = "filter-mode")]
+ filter_mode: Option<FilterMode>,
+
+ /// Allow overriding search mode over config
+ #[arg(long = "search-mode")]
+ search_mode: Option<SearchMode>,
+
+ /// Marker argument used to inform atuin that it was invoked from a shell up-key binding (hidden from help to avoid confusion)
+ #[arg(long = "shell-up-key-binding", hide = true)]
+ shell_up_key_binding: bool,
+
/// Use human-readable formatting for time
#[arg(long)]
human: bool,
@@ -61,7 +77,14 @@ pub struct Cmd {
}
impl Cmd {
- pub async fn run(self, db: &mut impl Database, settings: &Settings) -> Result<()> {
+ pub async fn run(self, db: &mut impl Database, settings: &mut Settings) -> Result<()> {
+ if self.search_mode.is_some() {
+ settings.search_mode = self.search_mode.unwrap();
+ }
+ if self.filter_mode.is_some() {
+ settings.filter_mode = self.filter_mode.unwrap();
+ }
+ settings.shell_up_key_binding = self.shell_up_key_binding;
if self.interactive {
let item = interactive::history(&self.query, settings, db).await?;
eprintln!("{item}");