aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--crates/atuin/src/command/client/stats.rs14
1 files changed, 13 insertions, 1 deletions
diff --git a/crates/atuin/src/command/client/stats.rs b/crates/atuin/src/command/client/stats.rs
index daffdd84..3ee60633 100644
--- a/crates/atuin/src/command/client/stats.rs
+++ b/crates/atuin/src/command/client/stats.rs
@@ -11,6 +11,18 @@ use atuin_client::{
use atuin_history::stats::{compute, pretty_print};
+fn parse_ngram_size(s: &str) -> Result<usize, String> {
+ let value = s
+ .parse::<usize>()
+ .map_err(|_| format!("'{s}' is not a valid window size"))?;
+
+ if value == 0 {
+ return Err("ngram window size must be at least 1".to_string());
+ }
+
+ Ok(value)
+}
+
#[derive(Parser, Debug)]
#[command(infer_subcommands = true)]
pub struct Cmd {
@@ -22,7 +34,7 @@ pub struct Cmd {
count: usize,
/// The number of consecutive commands to consider
- #[arg(long, short, default_value = "1")]
+ #[arg(long, short, default_value = "1", value_parser = parse_ngram_size)]
ngram_size: usize,
}