diff options
author | Jesse Luehrs <doy@tozt.net> | 2021-11-13 14:07:15 -0500 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2021-11-13 14:07:15 -0500 |
commit | f3d3aa2d2ae16d3ec33efed9b5c035ec3d523e0a (patch) | |
tree | c8f033e00bf6ba8d66b44cda31f6c01e7da770cf /src/format.rs | |
parent | d8ddced881672115f7dd7b7d5199190d5b80a60f (diff) | |
download | nbsh-f3d3aa2d2ae16d3ec33efed9b5c035ec3d523e0a.tar.gz nbsh-f3d3aa2d2ae16d3ec33efed9b5c035ec3d523e0a.zip |
clean up formatting a bit
Diffstat (limited to 'src/format.rs')
-rw-r--r-- | src/format.rs | 31 |
1 files changed, 31 insertions, 0 deletions
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) + } +} |