caltemps 0.3.0

A tool to query and report on your iCalendar data from vDirs.
Documentation
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>> {
    // BEGIN: args
    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);
    // END: args

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