From f3d3aa2d2ae16d3ec33efed9b5c035ec3d523e0a Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Sat, 13 Nov 2021 14:07:15 -0500 Subject: clean up formatting a bit --- src/format.rs | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 src/format.rs (limited to 'src/format.rs') diff --git a/src/format.rs b/src/format.rs new file mode 100644 index 0000000..2d59465 --- /dev/null +++ b/src/format.rs @@ -0,0 +1,31 @@ +use std::os::unix::process::ExitStatusExt as _; + +pub fn exit_status(status: std::process::ExitStatus) -> String { + if let Some(sig) = status.signal() { + if let Some(name) = signal_hook::low_level::signal_name(sig) { + format!("{:4} ", &name[3..]) + } else { + format!("SIG{} ", sig) + } + } else { + format!("{:03} ", status.code().unwrap()) + } +} + +pub fn duration(dur: std::time::Duration) -> String { + let secs = dur.as_secs(); + let nanos = dur.subsec_nanos(); + if secs > 60 { + let mins = secs / 60; + let secs = secs - mins * 60; + format!("{}m{}s", mins, secs) + } else if secs > 0 { + format!("{}.{:03}s", secs, nanos / 1_000_000) + } else if nanos >= 1_000_000 { + format!("{}ms", nanos / 1_000_000) + } else if nanos >= 1_000 { + format!("{}us", nanos / 1_000) + } else { + format!("{}ns", nanos) + } +} -- cgit v1.2.3-54-g00ecf