jobber 1.1.6-alpha

Minimalistic console work time tracker
use crate::{
    commands::{Cli, Config, Result},
    views::ApplyTableStyle,
};
use clap::Parser;

use tabled::{Table, Tabled};

/// Get configuration item(s)
#[derive(Parser, Debug)]
pub(crate) struct ConfigGet {}

#[derive(Tabled)]
struct ConfigView {
    table_style: String,
    delete_empty_job_after_export: String,
}

impl ConfigGet {
    pub(crate) fn run(&self, _: &Cli) -> Result<()> {
        let config = Config::load()?;
        let table_style = config.table_style.to_string();
        let delete_empty_job_after_export = match config.delete_empty_job_after_export {
            true => "delete",
            false => "leave",
        }
        .to_string();
        println!();
        println!("Configuration:");
        let config_view = ConfigView {
            table_style,
            delete_empty_job_after_export,
        };
        let mut table = Table::kv(vec![config_view]);
        table.style(&config.table_style);
        println!("{table}");
        Ok(())
    }
}