musicutil/src/config.rs
2022-08-16 09:10:12 +01:00

38 lines
988 B
Rust

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<Config, Box<dyn std::error::Error>> {
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<Config, serde_yaml::Error> =
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());
}