From 93fe3659757a57bba31ef8524dbbc0ffb1df10d4 Mon Sep 17 00:00:00 2001 From: Alexander Mohr Date: Sat, 24 May 2025 21:08:45 +0200 Subject: [PATCH] worf-warden, do not show ui on rbw error --- examples/worf-warden/src/main.rs | 64 ++++++++++++-------------------- 1 file changed, 23 insertions(+), 41 deletions(-) diff --git a/examples/worf-warden/src/main.rs b/examples/worf-warden/src/main.rs index c2b07ae..6f05733 100644 --- a/examples/worf-warden/src/main.rs +++ b/examples/worf-warden/src/main.rs @@ -24,51 +24,34 @@ fn split_at_tab(input: &str) -> Option<(&str, &str)> { } impl PasswordProvider { - fn new(config: &Config) -> Self { - let output = rbw("list", Some(vec!["--fields", "id,name"])); - let items = match output { - Ok(output) => { - let mut items = output - .lines() - .filter_map(|s| split_at_tab(s)) - .fold( - HashMap::new(), - |mut acc: HashMap>, (id, name)| { - acc.entry(name.to_owned()).or_default().push(id.to_owned()); - acc - }, - ) - .iter() - .map(|(key, value)| { - MenuItem::new( - key.clone(), - None, - None, - vec![].into_iter().collect(), - None, - 0.0, - Some(MenuItemMetaData { ids: value.clone() }), - ) - }) - .collect::>(); - gui::apply_sort(&mut items, &config.sort_order()); - items - } - Err(error) => { - let item = MenuItem::new( - format!("Error from rbw: {error}"), + fn new(config: &Config) -> Result { + let output = rbw("list", Some(vec!["--fields", "id,name"]))?; + let mut items = output + .lines() + .filter_map(|s| split_at_tab(s)) + .fold( + HashMap::new(), + |mut acc: HashMap>, (id, name)| { + acc.entry(name.to_owned()).or_default().push(id.to_owned()); + acc + }, + ) + .iter() + .map(|(key, value)| { + MenuItem::new( + key.clone(), None, None, vec![].into_iter().collect(), None, 0.0, - None, - ); - vec![item] - } - }; + Some(MenuItemMetaData { ids: value.clone() }), + ) + }) + .collect::>(); + gui::apply_sort(&mut items, &config.sort_order()); - Self { items } + Ok(Self { items }) } fn sub_provider(ids: Vec) -> Result { @@ -376,7 +359,6 @@ fn main() -> Result<(), String> { spawn_fork("ydotoold", None).expect("failed to spawn ydotoold"); // todo eventually use a propper rust client for this, for now rbw is good enough - let provider = PasswordProvider::new(&config); - + let provider = PasswordProvider::new(&config)?; show(config, provider) }