use directories_next::BaseDirs; use serde::Deserialize; use std::str::FromStr; #[derive(Debug, Deserialize)] pub struct Config { #[serde(with = "serde_with::rust::display_fromstr")] pub log_level: log::Level, } impl Default for Config { fn default() -> Self { Self { log_level: log::Level::from_str("info").unwrap(), } } } pub fn load_config() -> Result> { if let Some(base_dirs) = BaseDirs::new() { let config_dir = base_dirs.config_dir(); let config_file = std::fs::File::open(config_dir.join("musicutil.yaml")); if config_file.is_err() { return Ok(Config::default()); } let config: Result = serde_yaml::from_reader(config_file.unwrap()); match config { Ok(conf) => return Ok(conf), Err(err) => return Err(Box::new(err)), } } return Ok(Config::default()); }