compact-calendar-cli 0.2.0

A compact calendar CLI with TOML-based date details
Documentation
pub mod config;
pub mod formatting;
pub mod models;
pub mod rendering;

use config::CalendarConfig;
use models::{Calendar, CalendarOptions};
use std::fs;
use std::path::PathBuf;

pub fn load_config(config_path: &PathBuf) -> CalendarConfig {
    if !config_path.exists() {
        eprintln!(
            "Config file not found at {:?}, using empty configuration",
            config_path
        );
        return CalendarConfig {
            dates: Default::default(),
            ranges: Default::default(),
        };
    }

    let contents = fs::read_to_string(config_path).unwrap_or_else(|e| {
        eprintln!("Failed to read config file {:?}: {}", config_path, e);
        std::process::exit(1);
    });

    toml::from_str(&contents).unwrap_or_else(|e| {
        eprintln!("Failed to parse TOML config: {}", e);
        std::process::exit(1);
    })
}

pub fn build_calendar(year: i32, options: CalendarOptions, config: CalendarConfig) -> Calendar {
    let details = config.parse_dates_for_year(year);
    let ranges = config.parse_ranges_for_year(year);
    Calendar::new(year, options, details, ranges)
}