diff --git a/src/cli/config_cli/label_cli/list_cli.rs b/src/cli/config_cli/label_cli/list_cli.rs new file mode 100644 index 0000000..b6debb3 --- /dev/null +++ b/src/cli/config_cli/label_cli/list_cli.rs @@ -0,0 +1,29 @@ +use clap::Parser; + +use cull_gmail::{Config, Error, Result}; + +#[derive(Debug, Parser)] +pub struct ListCli { + /// Id of the rule on which action applies + #[clap(short, long)] + id: usize, +} + +impl ListCli { + pub fn run(&self, config: Config) -> Result<()> { + let Some(rule) = config.get_rule(self.id) else { + return Err(Error::RuleNotFound(self.id)); + }; + + print!("Labels in rule: "); + for (i, label) in rule.labels().iter().enumerate() { + if i != 0 { + print!(", {label}"); + } else { + print!("`{label}"); + } + } + println!("`"); + Ok(()) + } +} diff --git a/src/config_cli/label_cli/remove_cli.rs b/src/config_cli/label_cli/remove_cli.rs deleted file mode 100644 index c80843e..0000000 --- a/src/config_cli/label_cli/remove_cli.rs +++ /dev/null @@ -1,23 +0,0 @@ -use clap::Parser; - -use cull_gmail::{Config, Error, Result}; - -#[derive(Debug, Parser)] -pub struct RemoveCli { - /// Id of the rule on which action applies - #[clap(short, long)] - id: usize, - /// Label to remove from the rule - #[clap(short, long)] - label: String, -} - -impl RemoveCli { - pub fn run(&self, mut config: Config) -> Result<()> { - if config.get_rule(self.id).is_none() { - return Err(Error::RuleNotFound(self.id)); - } - - config.remove_label_from_rule(self.id, &self.label) - } -}