mirror of
https://github.com/ClementTsang/bottom
synced 2024-11-25 13:40:20 +00:00
refactor: remove time as a dependency outside of logging (#1506)
I was mostly just using the time crate for local log debugging and just to avoid converting seconds to h/m/s. This PR makes it so we are only using it for local log debugging.
This commit is contained in:
parent
c2d3ab5591
commit
1208c459e4
2 changed files with 82 additions and 42 deletions
|
@ -75,7 +75,7 @@ zfs = []
|
||||||
deploy = ["battery", "gpu", "zfs"]
|
deploy = ["battery", "gpu", "zfs"]
|
||||||
default = ["deploy"]
|
default = ["deploy"]
|
||||||
|
|
||||||
logging = ["fern", "log", "time/local-offset"]
|
logging = ["fern", "log", "time"]
|
||||||
generate_schema = ["schemars", "serde_json", "strum"]
|
generate_schema = ["schemars", "serde_json", "strum"]
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
|
@ -97,7 +97,6 @@ regex = "1.10.5"
|
||||||
serde = { version = "1.0.203", features = ["derive"] }
|
serde = { version = "1.0.203", features = ["derive"] }
|
||||||
starship-battery = { version = "0.8.3", optional = true }
|
starship-battery = { version = "0.8.3", optional = true }
|
||||||
sysinfo = "=0.30.12"
|
sysinfo = "=0.30.12"
|
||||||
time = { version = "0.3.36", features = ["formatting", "macros"] }
|
|
||||||
toml_edit = { version = "0.22.14", features = ["serde"] }
|
toml_edit = { version = "0.22.14", features = ["serde"] }
|
||||||
tui = { version = "0.27.0", package = "ratatui" }
|
tui = { version = "0.27.0", package = "ratatui" }
|
||||||
unicode-ellipsis = "0.2.0"
|
unicode-ellipsis = "0.2.0"
|
||||||
|
@ -107,6 +106,7 @@ unicode-width = "0.1.13"
|
||||||
# Used for logging.
|
# Used for logging.
|
||||||
fern = { version = "0.6.2", optional = true }
|
fern = { version = "0.6.2", optional = true }
|
||||||
log = { version = "0.4.22", optional = true }
|
log = { version = "0.4.22", optional = true }
|
||||||
|
time = { version = "0.3.36", features = ["local-offset", "formatting", "macros"], optional = true }
|
||||||
|
|
||||||
# These are just used for for schema generation.
|
# These are just used for for schema generation.
|
||||||
schemars = { version = "0.8.21", optional = true }
|
schemars = { version = "0.8.21", optional = true }
|
||||||
|
|
|
@ -142,46 +142,6 @@ impl Painter {
|
||||||
charge_percentage,
|
charge_percentage,
|
||||||
);
|
);
|
||||||
|
|
||||||
fn long_time(secs: i64) -> String {
|
|
||||||
let time = time::Duration::seconds(secs);
|
|
||||||
let num_hours = time.whole_hours();
|
|
||||||
let num_minutes = time.whole_minutes() - num_hours * 60;
|
|
||||||
let num_seconds = time.whole_seconds() - time.whole_minutes() * 60;
|
|
||||||
|
|
||||||
if num_hours > 0 {
|
|
||||||
format!(
|
|
||||||
"{} hour{}, {} minute{}, {} second{}",
|
|
||||||
num_hours,
|
|
||||||
if num_hours == 1 { "" } else { "s" },
|
|
||||||
num_minutes,
|
|
||||||
if num_minutes == 1 { "" } else { "s" },
|
|
||||||
num_seconds,
|
|
||||||
if num_seconds == 1 { "" } else { "s" },
|
|
||||||
)
|
|
||||||
} else {
|
|
||||||
format!(
|
|
||||||
"{} minute{}, {} second{}",
|
|
||||||
num_minutes,
|
|
||||||
if num_minutes == 1 { "" } else { "s" },
|
|
||||||
num_seconds,
|
|
||||||
if num_seconds == 1 { "" } else { "s" },
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fn short_time(secs: i64) -> String {
|
|
||||||
let time = time::Duration::seconds(secs);
|
|
||||||
let num_hours = time.whole_hours();
|
|
||||||
let num_minutes = time.whole_minutes() - num_hours * 60;
|
|
||||||
let num_seconds = time.whole_seconds() - time.whole_minutes() * 60;
|
|
||||||
|
|
||||||
if num_hours > 0 {
|
|
||||||
format!("{num_hours}h {num_minutes}m {num_seconds}s")
|
|
||||||
} else {
|
|
||||||
format!("{num_minutes}m {num_seconds}s")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
let mut battery_charge_rows = Vec::with_capacity(2);
|
let mut battery_charge_rows = Vec::with_capacity(2);
|
||||||
battery_charge_rows.push(Row::new([
|
battery_charge_rows.push(Row::new([
|
||||||
Cell::from("Charge").style(self.colours.text_style)
|
Cell::from("Charge").style(self.colours.text_style)
|
||||||
|
@ -292,3 +252,83 @@ impl Painter {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
|
fn get_hms(secs: i64) -> (i64, i64, i64) {
|
||||||
|
let hours = secs / (60 * 60);
|
||||||
|
let minutes = (secs / 60) - hours * 60;
|
||||||
|
let seconds = secs - minutes * 60 - hours * 60 * 60;
|
||||||
|
|
||||||
|
(hours, minutes, seconds)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn long_time(secs: i64) -> String {
|
||||||
|
let (hours, minutes, seconds) = get_hms(secs);
|
||||||
|
|
||||||
|
if hours > 0 {
|
||||||
|
format!(
|
||||||
|
"{} hour{}, {} minute{}, {} second{}",
|
||||||
|
hours,
|
||||||
|
if hours == 1 { "" } else { "s" },
|
||||||
|
minutes,
|
||||||
|
if minutes == 1 { "" } else { "s" },
|
||||||
|
seconds,
|
||||||
|
if seconds == 1 { "" } else { "s" },
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
format!(
|
||||||
|
"{} minute{}, {} second{}",
|
||||||
|
minutes,
|
||||||
|
if minutes == 1 { "" } else { "s" },
|
||||||
|
seconds,
|
||||||
|
if seconds == 1 { "" } else { "s" },
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn short_time(secs: i64) -> String {
|
||||||
|
let (hours, minutes, seconds) = get_hms(secs);
|
||||||
|
|
||||||
|
if hours > 0 {
|
||||||
|
format!("{hours}h {minutes}m {seconds}s")
|
||||||
|
} else {
|
||||||
|
format!("{minutes}m {seconds}s")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_get_hms() {
|
||||||
|
assert_eq!(get_hms(10), (0, 0, 10));
|
||||||
|
assert_eq!(get_hms(60), (0, 1, 0));
|
||||||
|
assert_eq!(get_hms(61), (0, 1, 1));
|
||||||
|
assert_eq!(get_hms(3600), (1, 0, 0));
|
||||||
|
assert_eq!(get_hms(3601), (1, 0, 1));
|
||||||
|
assert_eq!(get_hms(3661), (1, 1, 1));
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_long_time() {
|
||||||
|
assert_eq!(long_time(1), "0 minutes, 1 second".to_string());
|
||||||
|
assert_eq!(long_time(10), "0 minutes, 10 seconds".to_string());
|
||||||
|
assert_eq!(long_time(60), "1 minute, 0 seconds".to_string());
|
||||||
|
assert_eq!(long_time(61), "1 minute, 1 second".to_string());
|
||||||
|
assert_eq!(long_time(3600), "1 hour, 0 minutes, 0 seconds".to_string());
|
||||||
|
assert_eq!(long_time(3601), "1 hour, 0 minutes, 1 second".to_string());
|
||||||
|
assert_eq!(long_time(3661), "1 hour, 1 minute, 1 second".to_string());
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_short_time() {
|
||||||
|
assert_eq!(short_time(1), "0m 1s".to_string());
|
||||||
|
assert_eq!(short_time(10), "0m 10s".to_string());
|
||||||
|
assert_eq!(short_time(60), "1m 0s".to_string());
|
||||||
|
assert_eq!(short_time(61), "1m 1s".to_string());
|
||||||
|
assert_eq!(short_time(3600), "1h 0m 0s".to_string());
|
||||||
|
assert_eq!(short_time(3601), "1h 0m 1s".to_string());
|
||||||
|
assert_eq!(short_time(3661), "1h 1m 1s".to_string());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue