use config::Config; use emgauwa_lib::constants; use serde_derive::Deserialize; #[derive(Clone, Debug, Deserialize)] #[serde(default)] #[allow(unused)] pub struct Logging { pub level: String, pub file: String, } #[derive(Clone, Debug, Deserialize)] #[serde(default)] #[allow(unused)] pub struct Settings { pub database: String, pub port: u16, pub host: String, pub logging: Logging, } impl Default for Settings { fn default() -> Self { Settings { database: String::from("sqlite://emgauwa-core.sqlite"), port: constants::DEFAULT_PORT, host: String::from("127.0.0.1"), logging: Logging::default(), } } } impl Default for Logging { fn default() -> Self { Logging { level: String::from("info"), file: String::from("stdout"), } } } pub fn init() -> Settings { Config::builder() .add_source(config::File::with_name("emgauwa-core")) .add_source( config::Environment::with_prefix("EMGAUWA_CORE") .prefix_separator("__") .separator("__"), ) .build() .unwrap() .try_deserialize::() .expect("Error reading settings.") }