1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
|
mod battery;
mod bitcoins;
mod cputemp;
mod disk;
mod loadavg;
mod memory;
mod mpd;
mod netspeed;
mod pub_ip;
mod spotify;
mod time;
mod uptime;
mod volume;
mod weather;
use self::mpd::Mpd;
use battery::Battery;
use bitcoins::BitCoins;
use cputemp::CpuTemp;
use disk::Disk;
use loadavg::LoadAvg;
use memory::Memory;
use netspeed::NetSpeed;
use pub_ip::PubIp;
use spotify::Spotify;
use time::Time;
use uptime::Uptime;
use volume::Volume;
use weather::Weather;
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,
#[serde(default)]
pub netspeed: NetSpeed,
#[serde(default)]
pub pub_ip: PubIp,
#[serde(default)]
pub bitcoins: BitCoins,
}
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(),
netspeed: Default::default(),
pub_ip: Default::default(),
bitcoins: Default::default(),
}
}
}
fn default_seperator() -> String {
"|".to_string()
}
|