jobber 1.1.5-alpha

Minimalistic console work time tracker
use crate::{
    commands::{Cli, Config, Error, Result},
    jobber::JobberGet,
    views::ClientView,
};
use clap::Parser;

#[derive(Parser, Debug)]
pub(crate) struct ShowClient {
    /// Client's identifier (or the one from current job)
    id: Option<String>,
}

impl ShowClient {
    pub(crate) fn run(&self, cli: &Cli) -> Result<()> {
        println!();
        let config = Config::load()?;
        let database = cli.open_database()?;
        let id = if let Some(id) = &self.id {
            id
        } else if let Some(current) = config.current_job {
            &database.get_job(current)?.client
        } else {
            Err(Error::NoCurrentJob)?
        };
        println!("{}", ClientView::new(id, &config, &database, cli.ansi())?);

        Ok(())
    }
}