use std::path::PathBuf; use config::{Config, ConfigError, File}; use lazy_static::lazy_static; use serde::Deserialize; lazy_static! { static ref XDG: xdg::BaseDirectories = xdg::BaseDirectories::with_prefix("chrysopoeia").unwrap(); } #[derive(Debug, Default, Deserialize)] pub struct Settings { #[serde(default = "default_parser_dir")] pub parser_dir: PathBuf, } fn default_parser_dir() -> PathBuf { XDG.get_data_file("parsers") } pub fn get_settings() -> Result { Config::builder() .add_source(File::from(XDG.get_config_file("config")).required(false)) .add_source(File::with_name("chrysopoeia").required(false)) .build()? .try_deserialize::() }