From 1c394103886ed58b72016c971a6ab54dbd64d55b Mon Sep 17 00:00:00 2001 From: Andreas Grois Date: Wed, 7 Apr 2021 13:03:25 +0200 Subject: Initial commit. Borked, so don't use --- src/config.rs | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 src/config.rs (limited to 'src/config.rs') diff --git a/src/config.rs b/src/config.rs new file mode 100644 index 0000000..2c44978 --- /dev/null +++ b/src/config.rs @@ -0,0 +1,45 @@ +use serde::{Serialize, Deserialize}; + +#[derive(Serialize, Deserialize, Debug)] +pub struct SwaystatusConfig { + separator : Option, //Separator character between elements. + plugin_path : Option, //path to load plugins from. If unset, hardcoded value is used. + elements : Option>, //plugins to display and their config section. +} + +fn create_default_config() -> SwaystatusConfig { + return SwaystatusConfig{ + separator : Some(String::from(", ")), + plugin_path : Some(String::from("")), + //elements : Some(Vec::new())}; + elements : Some(vec!((String::from("time"), String::from("format = \"yyyy-mm-dd hh-mm-ss\"")))) + }; +} + +pub enum SwaystatusConfigErrors +{ + FileNotFound, + ParsingError { + message : String + } +} + +pub fn print_sample_config() { + let default_config = create_default_config(); + let output = toml::to_string(&default_config).unwrap(); + print!("{}", output); +} + +pub fn read_config(path : &std::path::Path) -> Result { + let config_file = match std::fs::read_to_string(path) { + Ok(x) => x, + Err (_) => return Err(SwaystatusConfigErrors::FileNotFound) + }; + let result = match toml::from_str(&config_file) { + Ok(x) => x, + Err(e) => return Err(SwaystatusConfigErrors::ParsingError{message: e.to_string()}) + }; + + return Ok(result); + +} -- cgit v1.2.3