X-Git-Url: https://git.r.bdr.sh/rbdr/lyricli/blobdiff_plain/44e7b4de4073e6dc25681bb2fa6977bf5869689a..d33e6d4dc5323513df30c598a56779b16448d595:/src/configuration.rs?ds=inline diff --git a/src/configuration.rs b/src/configuration.rs index f678461..8d79eba 100644 --- a/src/configuration.rs +++ b/src/configuration.rs @@ -1,25 +1,23 @@ +use serde::{Deserialize, Serialize}; +use serde_json::{from_str, to_string}; use std::env; use std::fs::{create_dir_all, write, File}; use std::io::{Read, Result}; use std::path::PathBuf; -use serde::{Deserialize, Serialize}; -use serde_json; const CONFIG_ENV_VARIABLE: &str = "LYRICLI_CONFIG_DIRECTORY"; const CONFIG_DEFAULT_LOCATION: &str = "XDG_CONFIG_HOME"; const CONFIG_FALLBACK_LOCATION: &str = ".config"; -const CONFIG_SUBDIRECTORY: &str = ".config"; +const CONFIG_SUBDIRECTORY: &str = "lyricli"; const CONFIG_FILENAME: &str = "lyricli.conf"; #[derive(Serialize, Deserialize, Debug)] pub struct Configuration { - enabled_sources: Vec + enabled_sources: Vec, } impl Configuration { - - pub fn new() -> Self { - + pub fn new() -> Self { if let Some(configuration) = Configuration::read() { return configuration; } @@ -55,8 +53,9 @@ impl Configuration { Configuration { enabled_sources: vec![ "apple_music".to_string(), - "spotify".to_string() - ] + "spotify".to_string(), + "strawberry".to_string(), + ], } } @@ -66,12 +65,12 @@ impl Configuration { let mut config_file = File::open(&config_file_path).ok()?; let mut config_contents = String::new(); config_file.read_to_string(&mut config_contents).ok()?; - serde_json::from_str(&config_contents).ok()? + from_str(&config_contents).ok()? } fn write(configuration: &Configuration) -> Result<()> { let config_file_path = Configuration::file_path(); - if let Ok(serialized_configuration) = serde_json::to_string(&configuration) { + if let Ok(serialized_configuration) = to_string(&configuration) { write(&config_file_path, serialized_configuration)?; } Ok(()) @@ -90,9 +89,13 @@ impl Configuration { Ok(directory) => PathBuf::from(directory), Err(_) => match env::var("HOME") { Ok(directory) => PathBuf::from(directory).join(CONFIG_FALLBACK_LOCATION), - Err(_) => panic!("Could not find required directory, {} or {} should be set and readable.", CONFIG_ENV_VARIABLE, CONFIG_DEFAULT_LOCATION), + Err(_) => panic!( + "Could not find required directory, {} or {} should be set and readable.", + CONFIG_ENV_VARIABLE, CONFIG_DEFAULT_LOCATION + ), }, }, - }.join(CONFIG_SUBDIRECTORY) + } + .join(CONFIG_SUBDIRECTORY) } }