mirror of
https://github.com/starship/starship.git
synced 2024-12-26 17:18:49 +01:00
feat(shell): allow distinguishing between pwsh and powershell (#5478)
* Distinguish between pwsh and powershell Co-authored-by: David Knaack <davidkna@users.noreply.github.com>
This commit is contained in:
parent
cb6df1d142
commit
d7a34b45f8
6
.github/config-schema.json
vendored
6
.github/config-schema.json
vendored
@ -5311,6 +5311,12 @@
|
||||
"default": "psh",
|
||||
"type": "string"
|
||||
},
|
||||
"pwsh_indicator": {
|
||||
"type": [
|
||||
"string",
|
||||
"null"
|
||||
]
|
||||
},
|
||||
"ion_indicator": {
|
||||
"default": "ion",
|
||||
"type": "string"
|
||||
|
@ -3817,22 +3817,23 @@ To enable it, set `disabled` to `false` in your configuration file.
|
||||
|
||||
### Options
|
||||
|
||||
| Option | Default | Description |
|
||||
| ---------------------- | ------------------------- | ------------------------------------------------------------ |
|
||||
| `bash_indicator` | `'bsh'` | A format string used to represent bash. |
|
||||
| `fish_indicator` | `'fsh'` | A format string used to represent fish. |
|
||||
| `zsh_indicator` | `'zsh'` | A format string used to represent zsh. |
|
||||
| `powershell_indicator` | `'psh'` | A format string used to represent powershell. |
|
||||
| `ion_indicator` | `'ion'` | A format string used to represent ion. |
|
||||
| `elvish_indicator` | `'esh'` | A format string used to represent elvish. |
|
||||
| `tcsh_indicator` | `'tsh'` | A format string used to represent tcsh. |
|
||||
| `xonsh_indicator` | `'xsh'` | A format string used to represent xonsh. |
|
||||
| `cmd_indicator` | `'cmd'` | A format string used to represent cmd. |
|
||||
| `nu_indicator` | `'nu'` | A format string used to represent nu. |
|
||||
| `unknown_indicator` | `''` | The default value to be displayed when the shell is unknown. |
|
||||
| `format` | `'[$indicator]($style) '` | The format for the module. |
|
||||
| `style` | `'white bold'` | The style for the module. |
|
||||
| `disabled` | `true` | Disables the `shell` module. |
|
||||
| Option | Default | Description |
|
||||
| ---------------------- | ------------------------- | ------------------------------------------------------------------------------------------------------ |
|
||||
| `bash_indicator` | `'bsh'` | A format string used to represent bash. |
|
||||
| `fish_indicator` | `'fsh'` | A format string used to represent fish. |
|
||||
| `zsh_indicator` | `'zsh'` | A format string used to represent zsh. |
|
||||
| `powershell_indicator` | `'psh'` | A format string used to represent powershell. |
|
||||
| `pwsh_indicator` | | A format string used to represent pwsh. The default value mirrors the value of `powershell_indicator`. |
|
||||
| `ion_indicator` | `'ion'` | A format string used to represent ion. |
|
||||
| `elvish_indicator` | `'esh'` | A format string used to represent elvish. |
|
||||
| `tcsh_indicator` | `'tsh'` | A format string used to represent tcsh. |
|
||||
| `xonsh_indicator` | `'xsh'` | A format string used to represent xonsh. |
|
||||
| `cmd_indicator` | `'cmd'` | A format string used to represent cmd. |
|
||||
| `nu_indicator` | `'nu'` | A format string used to represent nu. |
|
||||
| `unknown_indicator` | `''` | The default value to be displayed when the shell is unknown. |
|
||||
| `format` | `'[$indicator]($style) '` | The format for the module. |
|
||||
| `style` | `'white bold'` | The style for the module. |
|
||||
| `disabled` | `true` | Disables the `shell` module. |
|
||||
|
||||
### Variables
|
||||
|
||||
|
@ -13,6 +13,8 @@ pub struct ShellConfig<'a> {
|
||||
pub fish_indicator: &'a str,
|
||||
pub zsh_indicator: &'a str,
|
||||
pub powershell_indicator: &'a str,
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
pub pwsh_indicator: Option<&'a str>,
|
||||
pub ion_indicator: &'a str,
|
||||
pub elvish_indicator: &'a str,
|
||||
pub tcsh_indicator: &'a str,
|
||||
@ -32,6 +34,7 @@ impl<'a> Default for ShellConfig<'a> {
|
||||
fish_indicator: "fsh",
|
||||
zsh_indicator: "zsh",
|
||||
powershell_indicator: "psh",
|
||||
pwsh_indicator: None,
|
||||
ion_indicator: "ion",
|
||||
elvish_indicator: "esh",
|
||||
tcsh_indicator: "tsh",
|
||||
|
@ -372,7 +372,8 @@ impl<'a> Context<'a> {
|
||||
"bash" => Shell::Bash,
|
||||
"fish" => Shell::Fish,
|
||||
"ion" => Shell::Ion,
|
||||
"powershell" | "pwsh" => Shell::PowerShell,
|
||||
"pwsh" => Shell::Pwsh,
|
||||
"powershell" => Shell::PowerShell,
|
||||
"zsh" => Shell::Zsh,
|
||||
"elvish" => Shell::Elvish,
|
||||
"tcsh" => Shell::Tcsh,
|
||||
@ -810,6 +811,7 @@ pub enum Shell {
|
||||
Bash,
|
||||
Fish,
|
||||
Ion,
|
||||
Pwsh,
|
||||
PowerShell,
|
||||
Zsh,
|
||||
Elvish,
|
||||
|
@ -20,6 +20,7 @@ pub fn module<'a>(context: &'a Context) -> Option<Module<'a>> {
|
||||
Shell::Bash => Some(config.bash_indicator),
|
||||
Shell::Fish => Some(config.fish_indicator),
|
||||
Shell::Zsh => Some(config.zsh_indicator),
|
||||
Shell::Pwsh => config.pwsh_indicator.or(Some(config.powershell_indicator)),
|
||||
Shell::PowerShell => Some(config.powershell_indicator),
|
||||
Shell::Ion => Some(config.ion_indicator),
|
||||
Shell::Elvish => Some(config.elvish_indicator),
|
||||
@ -40,6 +41,7 @@ pub fn module<'a>(context: &'a Context) -> Option<Module<'a>> {
|
||||
"fish_indicator" => Some(Ok(config.fish_indicator)),
|
||||
"zsh_indicator" => Some(Ok(config.zsh_indicator)),
|
||||
"powershell_indicator" => Some(Ok(config.powershell_indicator)),
|
||||
"pwsh_indicator" => config.pwsh_indicator.map(Ok),
|
||||
"ion_indicator" => Some(Ok(config.ion_indicator)),
|
||||
"elvish_indicator" => Some(Ok(config.elvish_indicator)),
|
||||
"tcsh_indicator" => Some(Ok(config.tcsh_indicator)),
|
||||
@ -200,6 +202,50 @@ mod tests {
|
||||
assert_eq!(expected, actual);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_pwsh_default_format() {
|
||||
let expected = Some(format!("{} ", Color::White.bold().paint("psh")));
|
||||
let actual = ModuleRenderer::new("shell")
|
||||
.shell(Shell::Pwsh)
|
||||
.config(toml::toml! {
|
||||
[shell]
|
||||
disabled = false
|
||||
})
|
||||
.collect();
|
||||
|
||||
assert_eq!(expected, actual);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_pwsh_custom_format() {
|
||||
let expected = Some(format!("{} ", Color::Cyan.bold().paint("pwsh")));
|
||||
let actual = ModuleRenderer::new("shell")
|
||||
.shell(Shell::Pwsh)
|
||||
.config(toml::toml! {
|
||||
[shell]
|
||||
pwsh_indicator = "[pwsh](bold cyan)"
|
||||
disabled = false
|
||||
})
|
||||
.collect();
|
||||
|
||||
assert_eq!(expected, actual);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_pwsh_custom_format_fallback() {
|
||||
let expected = Some(format!("{} ", Color::Cyan.bold().paint("pwsh")));
|
||||
let actual = ModuleRenderer::new("shell")
|
||||
.shell(Shell::Pwsh)
|
||||
.config(toml::toml! {
|
||||
[shell]
|
||||
powershell_indicator = "[pwsh](bold cyan)"
|
||||
disabled = false
|
||||
})
|
||||
.collect();
|
||||
|
||||
assert_eq!(expected, actual);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_ion_default_format() {
|
||||
let expected = Some(format!("{} ", Color::White.bold().paint("ion")));
|
||||
|
Loading…
Reference in New Issue
Block a user