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