mirror of
https://github.com/pcvolkmer/checkbar.git
synced 2025-04-19 11:06:50 +00:00
Implement and use Default for ColorConfig
This commit is contained in:
parent
102e707b4d
commit
f32b4329ae
@ -2,13 +2,14 @@ mod actuator;
|
||||
mod http;
|
||||
mod tcp;
|
||||
|
||||
use std::fmt::{Display, Formatter, Result};
|
||||
|
||||
use serde_json::json;
|
||||
|
||||
pub use crate::checker::actuator::Checker as ActuatorChecker;
|
||||
pub use crate::checker::http::Checker as HttpChecker;
|
||||
pub use crate::checker::tcp::Checker as TcpChecker;
|
||||
use crate::config;
|
||||
use crate::config::get_config;
|
||||
use serde_json::json;
|
||||
use std::fmt::{Display, Formatter, Result};
|
||||
|
||||
pub struct CheckResult {
|
||||
pub name: String,
|
||||
@ -17,14 +18,7 @@ pub struct CheckResult {
|
||||
|
||||
impl Display for CheckResult {
|
||||
fn fmt(&self, f: &mut Formatter<'_>) -> Result {
|
||||
let color_config = match get_config().colors {
|
||||
Some(color_config) => color_config,
|
||||
None => config::ColorConfig {
|
||||
up: String::from("#00FF00"),
|
||||
warn: String::from("#FFFF00"),
|
||||
down: String::from("#FF0000"),
|
||||
},
|
||||
};
|
||||
let color_config = get_config().colors;
|
||||
let color = match &self.state {
|
||||
CheckState::Up => color_config.up,
|
||||
CheckState::Warn => color_config.warn,
|
||||
|
@ -10,7 +10,8 @@ use serde::{Deserialize, Deserializer};
|
||||
pub struct Config {
|
||||
#[serde(default, deserialize_with = "deserialize_duration")]
|
||||
pub interval: Option<Duration>,
|
||||
pub colors: Option<ColorConfig>,
|
||||
#[serde(default)]
|
||||
pub colors: ColorConfig,
|
||||
#[serde(default)]
|
||||
pub checks: Vec<CheckConfig>,
|
||||
}
|
||||
@ -22,6 +23,16 @@ pub struct ColorConfig {
|
||||
pub down: String,
|
||||
}
|
||||
|
||||
impl Default for ColorConfig {
|
||||
fn default() -> Self {
|
||||
Self {
|
||||
up: String::from("#00FF00"),
|
||||
warn: String::from("#FFFF00"),
|
||||
down: String::from("#FF0000"),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Deserialize)]
|
||||
pub struct CheckConfig {
|
||||
pub name: String,
|
||||
@ -53,13 +64,13 @@ pub fn get_config() -> Config {
|
||||
Ok(config) => config,
|
||||
Err(_e) => Config {
|
||||
interval: None,
|
||||
colors: None,
|
||||
colors: ColorConfig::default(),
|
||||
checks: vec![],
|
||||
},
|
||||
},
|
||||
Err(_) => Config {
|
||||
interval: None,
|
||||
colors: None,
|
||||
colors: ColorConfig::default(),
|
||||
checks: vec![],
|
||||
},
|
||||
}
|
||||
@ -195,6 +206,20 @@ mod tests {
|
||||
assert_eq!(config.checks.len(), 0);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_should_parse_config_with_default_colors() {
|
||||
let config: Config = toml::from_str(
|
||||
r#"
|
||||
interval = "2m 3s"
|
||||
"#,
|
||||
)
|
||||
.unwrap();
|
||||
|
||||
assert_eq!(config.colors.up, "#00FF00".to_string());
|
||||
assert_eq!(config.colors.warn, "#FFFF00".to_string());
|
||||
assert_eq!(config.colors.down, "#FF0000".to_string());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_should_parse_durations() {
|
||||
assert_eq!(parse_duration("1m30s"), Some(Duration::from_secs(90)));
|
||||
|
Loading…
x
Reference in New Issue
Block a user