mirror of
https://github.com/Llewellynvdm/starship.git
synced 2024-11-11 07:40:57 +00:00
feat(status): Add hex_status (#3312)
This commit is contained in:
parent
16af0ffcd6
commit
cb40787e2a
@ -2941,6 +2941,7 @@ This module is not supported on elvish and nu shell.
|
|||||||
| Variable | Example | Description |
|
| Variable | Example | Description |
|
||||||
| ----------------------- | ------- | ----------------------------------------------------------------------- |
|
| ----------------------- | ------- | ----------------------------------------------------------------------- |
|
||||||
| status | `127` | The exit code of the last command |
|
| status | `127` | The exit code of the last command |
|
||||||
|
| hex_status | `0x7F` | The exit code of the last command in hex |
|
||||||
| int | `127` | The exit code of the last command |
|
| int | `127` | The exit code of the last command |
|
||||||
| common_meaning | `ERROR` | Meaning of the code if not a signal |
|
| common_meaning | `ERROR` | Meaning of the code if not a signal |
|
||||||
| signal_number | `9` | Signal number corresponding to the exit code, only if signalled |
|
| signal_number | `9` | Signal number corresponding to the exit code, only if signalled |
|
||||||
|
@ -106,6 +106,11 @@ fn format_exit_code<'a>(
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
let hex_status = exit_code
|
||||||
|
.parse::<i32>()
|
||||||
|
.ok()
|
||||||
|
.map(|code| format!("0x{:X}", code));
|
||||||
|
|
||||||
let common_meaning = status_common_meaning(exit_code_int);
|
let common_meaning = status_common_meaning(exit_code_int);
|
||||||
|
|
||||||
let raw_signal_number = match config.recognize_signal_code {
|
let raw_signal_number = match config.recognize_signal_code {
|
||||||
@ -148,6 +153,7 @@ fn format_exit_code<'a>(
|
|||||||
})
|
})
|
||||||
.map(|variable| match variable {
|
.map(|variable| match variable {
|
||||||
"status" => Some(Ok(exit_code)),
|
"status" => Some(Ok(exit_code)),
|
||||||
|
"hex_status" => Ok(hex_status.as_deref().or(Some(exit_code))).transpose(),
|
||||||
"int" => Some(Ok(exit_code)),
|
"int" => Some(Ok(exit_code)),
|
||||||
"maybe_int" => Ok(maybe_exit_code_number).transpose(),
|
"maybe_int" => Ok(maybe_exit_code_number).transpose(),
|
||||||
"common_meaning" => Ok(common_meaning).transpose(),
|
"common_meaning" => Ok(common_meaning).transpose(),
|
||||||
@ -279,6 +285,29 @@ mod tests {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn failure_hex_status() {
|
||||||
|
let exit_values = [1, 2, 130, -2147467260];
|
||||||
|
let string_values = ["0x1", "0x2", "0x82", "0x80004004"];
|
||||||
|
|
||||||
|
for (exit_value, string_value) in exit_values.iter().zip(string_values) {
|
||||||
|
let expected = Some(format!(
|
||||||
|
"{} ",
|
||||||
|
Color::Red.bold().paint(format!("✖{}", string_value))
|
||||||
|
));
|
||||||
|
let actual = ModuleRenderer::new("status")
|
||||||
|
.config(toml::toml! {
|
||||||
|
[status]
|
||||||
|
symbol = "✖"
|
||||||
|
disabled = false
|
||||||
|
format = "[${symbol}${hex_status}]($style) "
|
||||||
|
})
|
||||||
|
.status(*exit_value)
|
||||||
|
.collect();
|
||||||
|
assert_eq!(expected, actual);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn signal_name() {
|
fn signal_name() {
|
||||||
let exit_values = [1, 2, 126, 127, 130, 101];
|
let exit_values = [1, 2, 126, 127, 130, 101];
|
||||||
|
Loading…
Reference in New Issue
Block a user