zman 3.1.3

a CLI year progress
Documentation
use clap::Parser;
use std::{process, sync::Arc};

use anyhow::Result;
use jiff::Zoned;

use zman::{
    cli::{Opts, Period},
    output::Printer,
    progress,
};

fn main() {
    if let Err(err) = run() {
        eprintln!("Error: {:?}", err);
        process::exit(1);
    }
}

fn run() -> Result<()> {
    let opts = Arc::new(Opts::parse());

    let today = Zoned::now().date();
    let mut printer = Printer::new(Arc::clone(&opts));
    match opts.period {
        Period::Year => {
            let ratio = progress::year(today)?;
            printer = printer.ratio(ratio).ratio_char("y");
            printer.print();
        }
        Period::Month => {
            let ratio = progress::month(today)?;
            printer = printer.ratio(ratio).ratio_char("m");
            printer.print();
        }
        Period::Week => {
            let ratio = progress::week(today)?;
            printer = printer.ratio(ratio).ratio_char("w");
            printer.print();
        }
    }

    Ok(())
}