caltemps 0.3.0

A tool to query and report on your iCalendar data from vDirs.
Documentation
use config::{Config, ConfigError, Environment, File};
use std::path::Path;

#[derive(Debug, serde::Deserialize, Clone)]
#[allow(unused)]
pub struct Settings {
    pub vdir_path: String,
    pub default_filter: String,
    pub default_date_range: String,
}

impl Settings {
    pub fn new(config_file: String) -> Result<Self, ConfigError> {
        let mut builder = Config::builder()
            .set_default("vdir_path", "calendars")?
            .set_default("default_filter", "")?
            .set_default("default_date_range", "monday..friday")?;
        if Path::new(&config_file).is_file() {
            builder = builder.add_source(File::with_name(&config_file))
        };
        let cfg = builder
            // Support CALTEMPS_VARIABLE env vars
            .add_source(Environment::with_prefix("caltemps"))
            .build()?;
        cfg.try_deserialize()
    }
}