From 861c2885c7df08f5239ce1bbfd96f3d5080c99dc Mon Sep 17 00:00:00 2001 From: Awiteb Date: Sat, 29 Jun 2024 12:55:19 +0300 Subject: [PATCH] feat: Case insensitive filter Signed-off-by: Awiteb --- src/cli/list_command.rs | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/src/cli/list_command.rs b/src/cli/list_command.rs index 522fff8..92c17bb 100644 --- a/src/cli/list_command.rs +++ b/src/cli/list_command.rs @@ -47,23 +47,30 @@ impl LprsCommand for List { )); } - let pattern = if self.regex || self.filter.is_none() { - self.filter.unwrap_or_else(|| ".".to_owned()) + let pattern = if self.regex { + self.filter + .expect("Is required if the `regex` option is `true`") } else { format!( ".*{}.*", - regex::escape(self.filter.as_deref().unwrap_or("")) + regex::escape(self.filter.as_deref().unwrap_or_default()) ) }; log::debug!("Listing vaults filtered by: {pattern}"); - let re = regex::Regex::new(&pattern)?; + let re = regex::Regex::new(&pattern.to_lowercase())?; let vaults_list = vault_manager.vaults.iter().enumerate().filter(|(_, v)| { - re.is_match(&v.name) - || v.username.as_deref().is_some_and(|u| re.is_match(u)) - || v.service.as_deref().is_some_and(|s| re.is_match(s)) - || v.note.as_deref().is_some_and(|n| re.is_match(n)) + re.is_match(&v.name.to_lowercase()) + || v.username + .as_deref() + .is_some_and(|u| re.is_match(&u.to_lowercase())) + || v.service + .as_deref() + .is_some_and(|s| re.is_match(&s.to_lowercase())) + || v.note + .as_deref() + .is_some_and(|n| re.is_match(&n.to_lowercase())) }); if self.json {