triangular-earth-calendar 0.2.0

An alternative timekeeping system cli tool
use crate::cmds::SubCmd;
use clap::Parser;
use tracing::{event, instrument, Level};

use tracing_subscriber::{filter::LevelFilter, prelude::*, EnvFilter};

use triangular_earth_calender_lib::Errors;

pub mod cmds;

#[derive(Parser, Debug)]
#[command(author, version, about, long_about = None, arg_required_else_help(true))]
struct Cli {
    #[command(subcommand)]
    sub_cmd: Option<SubCmd>,
    #[arg(short, long, default_value_t = LevelFilter::INFO)]
    verbosity: LevelFilter,
}

#[instrument]
fn main() -> Result<(), Errors> {
    let args = Cli::parse();
    let filter = EnvFilter::from_default_env().add_directive(args.verbosity.into());
    tracing_subscriber::registry().with(filter).init();
    event!(Level::INFO, "Starting main function");
    match args.sub_cmd {
        Some(sc) => sc.run(),
        None => SubCmd::Now.run(),
    }
}