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(),
}
}