use std::{error::Error, io};
use clap::{CommandFactory, Parser};
use clap_mangen::Man;
use codact::{cli::Cli, event, solution};
fn main() -> Result<(), Box<dyn Error + Send + Sync + 'static>> {
let cli = Cli::parse();
if let Some(generator) = cli.completion {
clap_complete::CompleteEnv::with_factory(Cli::command)
.completer("exhaustive")
.complete();
let mut cmd = Cli::command();
Cli::print_completion(generator, &mut cmd);
return Ok(());
}
if cli.man.is_some() {
Man::new(Cli::command()).render(&mut io::stdout())?;
return Ok(());
}
match (cli.year, cli.day) {
(event::Year::Y2015, event::Day::D1) => solution::y2025_d1::answer(),
_ => println!("Not yet solved"),
}
Ok(())
}