jobber 1.1.6-alpha

Minimalistic console work time tracker
use crate::commands::{Cli, Result};
use clap::{Parser, Subcommand, ValueEnum};

mod config_get;
mod config_set;

use config_get::ConfigGet;
use config_set::ConfigSet;

/// View and edit configuration.
#[derive(Parser)]
pub(crate) struct Configure {
    #[command(subcommand)]
    pub(crate) command: ConfigCommand,
}

#[derive(Subcommand)]
pub(crate) enum ConfigCommand {
    /// Get configuration
    Get(ConfigGet),
    /// Set configuration
    Set(ConfigSet),
}

impl Configure {
    pub(crate) fn run(&self, cli: &Cli) -> Result<()> {
        match &self.command {
            ConfigCommand::Get(config_get) => config_get.run(cli),
            ConfigCommand::Set(config_set) => config_set.run(cli),
        }
    }
}

#[derive(ValueEnum, Debug, Clone)]
enum ConfigItems {
    TableStyle,
    DeleteEmptyJobAfterInvoice,
}