diff options
author | AdaShoelace <adashoelace@gmail.com> | 2021-01-21 22:24:15 +0100 |
---|---|---|
committer | AdaShoelace <adashoelace@gmail.com> | 2021-01-21 22:24:15 +0100 |
commit | 861a986567310dfe9ccd85d2976b0ebfb683c818 (patch) | |
tree | 65ec9c5397bf7de009f3484ea161e77df2120f67 /src/config | |
parent | e6f9ce2ed5da0eb833d548a613c3b70360c9f4b5 (diff) |
Change to serde
Change config serializer to serde in order to get cleaner config types.
Diffstat (limited to 'src/config')
-rw-r--r-- | src/config/battery.rs | 21 | ||||
-rw-r--r-- | src/config/cputemp.rs | 19 | ||||
-rw-r--r-- | src/config/disk.rs | 19 | ||||
-rw-r--r-- | src/config/loadavg.rs | 19 | ||||
-rw-r--r-- | src/config/memory.rs | 19 | ||||
-rw-r--r-- | src/config/mod.rs | 107 | ||||
-rw-r--r-- | src/config/mpd.rs | 23 | ||||
-rw-r--r-- | src/config/spotify.rs | 19 | ||||
-rw-r--r-- | src/config/time.rs | 19 | ||||
-rw-r--r-- | src/config/uptime.rs | 19 | ||||
-rw-r--r-- | src/config/volume.rs | 21 | ||||
-rw-r--r-- | src/config/weather.rs | 23 |
12 files changed, 328 insertions, 0 deletions
diff --git a/src/config/battery.rs b/src/config/battery.rs new file mode 100644 index 0000000..5f7eaea --- /dev/null +++ b/src/config/battery.rs @@ -0,0 +1,21 @@ +use serde::{Deserialize, Serialize}; +use std::default::Default; + +#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] +pub struct Battery { + pub source: String, + pub icon: String, + pub enabled: bool, + pub delay: f64, +} + +impl Default for Battery { + fn default() -> Self { + Battery { + source: String::from("BAT0"), + icon: String::from(""), + enabled: false, + delay: 120.0, + } + } +} diff --git a/src/config/cputemp.rs b/src/config/cputemp.rs new file mode 100644 index 0000000..39b43b0 --- /dev/null +++ b/src/config/cputemp.rs @@ -0,0 +1,19 @@ +use serde::{Deserialize, Serialize}; +use std::default::Default; + +#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] +pub struct CpuTemp { + pub icon: String, + pub enabled: bool, + pub delay: f64, +} + +impl Default for CpuTemp { + fn default() -> Self { + CpuTemp { + icon: String::from(""), + enabled: false, + delay: 120.0, + } + } +} diff --git a/src/config/disk.rs b/src/config/disk.rs new file mode 100644 index 0000000..ff8d07a --- /dev/null +++ b/src/config/disk.rs @@ -0,0 +1,19 @@ +use serde::{Deserialize, Serialize}; +use std::default::Default; + +#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] +pub struct Disk { + pub icon: String, + pub enabled: bool, + pub delay: f64, +} + +impl Default for Disk { + fn default() -> Self { + Disk { + icon: String::from(""), + enabled: false, + delay: 60.0, + } + } +} diff --git a/src/config/loadavg.rs b/src/config/loadavg.rs new file mode 100644 index 0000000..96d3f74 --- /dev/null +++ b/src/config/loadavg.rs @@ -0,0 +1,19 @@ +use serde::{Deserialize, Serialize}; +use std::default::Default; + +#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] +pub struct LoadAvg { + pub icon: String, + pub enabled: bool, + pub delay: f64, +} + +impl Default for LoadAvg { + fn default() -> Self { + LoadAvg { + icon: String::from(""), + enabled: false, + delay: 60.0, + } + } +} diff --git a/src/config/memory.rs b/src/config/memory.rs new file mode 100644 index 0000000..19e9a31 --- /dev/null +++ b/src/config/memory.rs @@ -0,0 +1,19 @@ +use serde::{Deserialize, Serialize}; +use std::default::Default; + +#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] +pub struct Memory { + pub icon: String, + pub enabled: bool, + pub delay: f64, +} + +impl Default for Memory { + fn default() -> Self { + Memory { + icon: String::from(""), + enabled: true, + delay: 2.0, + } + } +} diff --git a/src/config/mod.rs b/src/config/mod.rs new file mode 100644 index 0000000..1a1ffd5 --- /dev/null +++ b/src/config/mod.rs @@ -0,0 +1,107 @@ +mod battery; +mod cputemp; +mod disk; +mod memory; +mod mpd; +mod time; +mod uptime; +mod volume; +mod weather; +mod spotify; +mod loadavg; + +use self::mpd::Mpd; +use battery::Battery; +use cputemp::CpuTemp; +use disk::Disk; +use memory::Memory; +use time::Time; +use uptime::Uptime; +use volume::Volume; +use weather::Weather; +use spotify::Spotify; +use loadavg::LoadAvg; + +use std::default::Default; +use std::fs::File; +use std::io::Read; + +use lazy_static::lazy_static; +use serde::{Deserialize, Serialize}; + +lazy_static! { + pub static ref CONFIG: Config = { + let yml_source = std::env::var("HOME").unwrap() + "/.config/rsblocks/rsblocks.yml"; + let mut data = String::new(); + + match File::open(&yml_source) { + Ok(mut file) => { + file.read_to_string(&mut data).expect("Failed to read config to string"); + serde_yaml::from_str(&data).expect("Failed to parse config") + } + Err(_) => Config::default(), + } + }; +} + +#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] +pub struct Config { + #[serde(default = "default_seperator")] + pub seperator: String, + + #[serde(default)] + pub time: Time, + + #[serde(default)] + pub memory: Memory, + + #[serde(default)] + pub disk: Disk, + + #[serde(default)] + pub volume: Volume, + + #[serde(default)] + pub weather: Weather, + + #[serde(default)] + pub battery: Battery, + + #[serde(default)] + pub cpu_temperature: CpuTemp, + + #[serde(default)] + pub uptime: Uptime, + + #[serde(default)] + pub mpd: Mpd, + + #[serde(default)] + pub spotify: Spotify, + + #[serde(default)] + pub loadavg: LoadAvg +} + +impl Default for Config { + fn default() -> Self { + Self { + seperator: "|".to_string(), + time: Default::default(), + memory: Default::default(), + disk: Default::default(), + volume: Default::default(), + weather: Default::default(), + battery: Default::default(), + cpu_temperature: Default::default(), + uptime: Default::default(), + mpd: Default::default(), + spotify: Default::default(), + loadavg: Default::default() + } + } +} + +fn default_seperator() -> String { + "|".to_string() +} diff --git a/src/config/mpd.rs b/src/config/mpd.rs new file mode 100644 index 0000000..15c9c1b --- /dev/null +++ b/src/config/mpd.rs @@ -0,0 +1,23 @@ +use serde::{Deserialize, Serialize}; +use std::default::Default; + +#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] +pub struct Mpd { + pub icon: String, + pub host: String, + pub port: String, + pub enabled: bool, + pub delay: f64, +} + +impl Default for Mpd { + fn default() -> Self { + Mpd { + icon: String::from(""), + host: String::from("127.0.0.1"), + port: String::from("6600"), + enabled: false, + delay: 15.0, + } + } +} diff --git a/src/config/spotify.rs b/src/config/spotify.rs new file mode 100644 index 0000000..7cdcd2c --- /dev/null +++ b/src/config/spotify.rs @@ -0,0 +1,19 @@ +use serde::{Deserialize, Serialize}; +use std::default::Default; + +#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] +pub struct Spotify { + pub icon: String, + pub enabled: bool, + pub delay: f64, +} + +impl Default for Spotify { + fn default() -> Self { + Spotify { + icon: String::from(""), + enabled: false, + delay: 15.0, + } + } +} diff --git a/src/config/time.rs b/src/config/time.rs new file mode 100644 index 0000000..4dc6720 --- /dev/null +++ b/src/config/time.rs @@ -0,0 +1,19 @@ +use serde::{Deserialize, Serialize}; +use std::default::Default; + +#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] +pub struct Time { + pub format: String, + pub icon: String, + pub delay: f64, +} + +impl Default for Time { + fn default() -> Self { + Time { + format: String::from("%T"), + icon: String::from(""), + delay: 1.0, + } + } +} diff --git a/src/config/uptime.rs b/src/config/uptime.rs new file mode 100644 index 0000000..9791833 --- /dev/null +++ b/src/config/uptime.rs @@ -0,0 +1,19 @@ +use serde::{Deserialize, Serialize}; +use std::default::Default; + +#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] +pub struct Uptime { + pub icon: String, + pub enabled: bool, + pub delay: f64, +} + +impl Default for Uptime { + fn default() -> Self { + Uptime { + icon: String::from(""), + enabled: false, + delay: 60.0, + } + } +} diff --git a/src/config/volume.rs b/src/config/volume.rs new file mode 100644 index 0000000..c660912 --- /dev/null +++ b/src/config/volume.rs @@ -0,0 +1,21 @@ +use serde::{Deserialize, Serialize}; +use std::default::Default; + +#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] +pub struct Volume { + pub icon: String, + pub enabled: bool, + pub delay: f64, + pub card: String, +} + +impl Default for Volume { + fn default() -> Self { + Volume { + icon: String::from(""), + enabled: false, + delay: 0.17, + card: String::from("ALSA"), + } + } +} diff --git a/src/config/weather.rs b/src/config/weather.rs new file mode 100644 index 0000000..ba2e90a --- /dev/null +++ b/src/config/weather.rs @@ -0,0 +1,23 @@ +use serde::{Deserialize, Serialize}; +use std::default::Default; + +#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] +pub struct Weather { + pub city: String, + pub format: String, + pub icon: String, + pub enabled: bool, + pub delay: f64, +} + +impl Default for Weather { + fn default() -> Self { + Weather { + city: String::from(""), + format: String::from("+%t"), + icon: String::from(""), + enabled: false, + delay: 7200.0, //7200 seconds = 2 hours + } + } +} |