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
.add_source(Environment::with_prefix("caltemps"))
.build()?;
cfg.try_deserialize()
}
}