From e02310401add677170bd402d1430ec34e2aded6d Mon Sep 17 00:00:00 2001
From: Awiteb
Date: Sat, 29 Jun 2024 12:02:39 +0200
Subject: [PATCH] feat: Case insensitive filter (#61)
Reviewed-on: https://git.4rs.nl/awiteb/lprs/pulls/61
Co-authored-by: Awiteb
Co-committed-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 {