diff --git a/atuin-client/src/settings.rs b/atuin-client/src/settings.rs index c5e72025..93bc64ea 100644 --- a/atuin-client/src/settings.rs +++ b/atuin-client/src/settings.rs @@ -145,18 +145,30 @@ pub enum WordJumpMode { #[derive(Clone, Debug, Deserialize)] pub struct Stats { + #[serde(default = "Stats::common_prefix_default")] pub common_prefix: Vec, // sudo, etc. commands we want to strip off + #[serde(default = "Stats::common_subcommands_default")] pub common_subcommands: Vec, // kubectl, commands we should consider subcommands for } +impl Stats { + fn common_prefix_default() -> Vec { + vec!["sudo", "doas"].into_iter().map(String::from).collect() + } + + fn common_subcommands_default() -> Vec { + vec!["cargo", "go", "git", "npm", "yarn", "pnpm", "kubectl"] + .into_iter() + .map(String::from) + .collect() + } +} + impl Default for Stats { fn default() -> Self { Self { - common_prefix: vec!["sudo", "doas"].into_iter().map(String::from).collect(), - common_subcommands: vec!["cargo", "go", "git", "npm", "yarn", "pnpm", "kubectl"] - .into_iter() - .map(String::from) - .collect(), + common_prefix: Self::common_prefix_default(), + common_subcommands: Self::common_subcommands_default(), } } }