mirror of
https://github.com/pcvolkmer/checkbar.git
synced 2025-04-19 11:06:50 +00:00
Allow whitespaces in update duration interval
This commit is contained in:
parent
1d56580135
commit
813ebc7a24
@ -36,7 +36,7 @@ default to 60 seconds.
|
||||
|
||||
----
|
||||
# Update interval using value with units. Default value if not set is 60 sec.
|
||||
interval = 2m30s
|
||||
interval = "2m 30s"
|
||||
----
|
||||
|
||||
Each host or application to be checked consists of `name` and `url`.
|
||||
@ -58,7 +58,7 @@ $ checkbar /etc/checkbar_example.toml
|
||||
|
||||
=== Colors
|
||||
|
||||
To change the colors, use the following configuration. As an example the colors of the default configuration are shown.
|
||||
To change the colors, use the following configuration. As an example, the colors of the default configuration are shown.
|
||||
|
||||
----
|
||||
...
|
||||
|
@ -69,23 +69,25 @@ pub fn parse_duration(value: Option<String>) -> Duration {
|
||||
}
|
||||
_ => return Duration::from_secs(60),
|
||||
};
|
||||
if let Ok(re) = Regex::new(r"^((?P<hours>\d+)h)?((?P<minutes>\d+)m)?((?P<seconds>\d+)s?)?$") {
|
||||
if let Ok(re) =
|
||||
Regex::new(r"^((?P<hours>\d+)h\s*)?((?P<minutes>\d+)m\s*)?((?P<seconds>\d+)s?\s*)?$")
|
||||
{
|
||||
if re.is_match(value) {
|
||||
let parts = re.captures_iter(value).nth(0).unwrap();
|
||||
let parts = re.captures_iter(value).next().unwrap();
|
||||
if let Some(hours) = parts.name("hours") {
|
||||
result += match u64::from_str_radix(hours.as_str(), 10) {
|
||||
result += match hours.as_str().parse::<u64>() {
|
||||
Ok(value) => value * 60 * 60,
|
||||
_ => 0,
|
||||
};
|
||||
}
|
||||
if let Some(minutes) = parts.name("minutes") {
|
||||
result += match u64::from_str_radix(minutes.as_str(), 10) {
|
||||
result += match minutes.as_str().parse::<u64>() {
|
||||
Ok(value) => value * 60,
|
||||
_ => 0,
|
||||
};
|
||||
}
|
||||
if let Some(seconds) = parts.name("seconds") {
|
||||
result += match u64::from_str_radix(seconds.as_str(), 10) {
|
||||
result += match seconds.as_str().parse::<u64>() {
|
||||
Ok(value) => value,
|
||||
_ => 0,
|
||||
};
|
||||
@ -122,6 +124,18 @@ mod tests {
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_should_parse_durations_with_whitespaces() {
|
||||
assert_eq!(
|
||||
parse_duration(Some("1m 30s".to_string())),
|
||||
Duration::from_secs(90)
|
||||
);
|
||||
assert_eq!(
|
||||
parse_duration(Some("1h 1m 1s".to_string())),
|
||||
Duration::from_secs(3661)
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_should_return_default_for_unparseable_durations() {
|
||||
assert_eq!(parse_duration(None), Duration::from_secs(60));
|
||||
|
Loading…
x
Reference in New Issue
Block a user