Files
cull-gmail/src/cli/config_cli.rs
Jeremiah Russell de91753f88 ♻️ refactor(cli): move config_cli to cli directory
- moves the config_cli module to the cli directory for better organization
2025-10-09 17:03:04 +01:00

42 lines
989 B
Rust

use clap::{Parser, Subcommand};
mod action_cli;
mod label_cli;
mod rules_cli;
use action_cli::ActionCli;
use cull_gmail::{Config, Result};
use label_cli::LabelCli;
use rules_cli::RulesCli;
#[derive(Subcommand, Debug)]
enum SubCmds {
/// Configure end-of-life rules
#[clap(name = "rules")]
Rules(RulesCli),
/// Add or remove Label from rule
#[clap(name = "label")]
Label(LabelCli),
/// Set action on a specific rule
#[clap(name = "action")]
Action(ActionCli),
}
#[derive(Parser, Debug)]
pub struct ConfigCli {
#[clap(flatten)]
logging: clap_verbosity_flag::Verbosity,
#[command(subcommand)]
sub_command: SubCmds,
}
impl ConfigCli {
pub fn run(&self, config: Config) -> Result<()> {
match &self.sub_command {
SubCmds::Rules(rules_cli) => rules_cli.run(config),
SubCmds::Label(label_cli) => label_cli.run(config),
SubCmds::Action(action_cli) => action_cli.run(config),
}
}
}