use caltemps::{
CalTempsDateRange, Cli, Settings, get_matching_entry, read_vdir_cal, report_summary,
};
use clap::Parser;
use std::path::Path;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let cli = Cli::parse();
let cfg = Settings::new(cli.config).unwrap();
let date_range = CalTempsDateRange::new(cli.date_range.unwrap_or(cfg.default_date_range))?;
let active_filter = cli.filter.unwrap_or(cfg.default_filter);
match read_vdir_cal(Path::new(&cfg.vdir_path)) {
Ok(cal) => {
let entries: Vec<_> = cal
.components
.into_iter()
.filter_map(|c| get_matching_entry(c, active_filter.clone(), &date_range))
.collect();
report_summary(
active_filter.clone(),
&date_range,
cli.report_type,
cli.output_type,
entries,
);
Ok(())
}
Err(error) => {
eprintln!("Error working on:\t'{}'", cfg.vdir_path);
eprintln!("{}", error);
Err(error)
}
}
}