mirror of
https://github.com/starship/starship.git
synced 2026-06-23 02:05:51 +07:00
feat(shell): Add style config for shell module (#3108)
* add style config for shell module * update shell docs * fix formatting * update tests
This commit is contained in:
@@ -16,13 +16,14 @@ pub struct ShellConfig<'a> {
|
||||
pub nu_indicator: &'a str,
|
||||
pub xonsh_indicator: &'a str,
|
||||
pub unknown_indicator: &'a str,
|
||||
pub style: &'a str,
|
||||
pub disabled: bool,
|
||||
}
|
||||
|
||||
impl<'a> Default for ShellConfig<'a> {
|
||||
fn default() -> Self {
|
||||
ShellConfig {
|
||||
format: "$indicator ",
|
||||
format: "[$indicator]($style) ",
|
||||
bash_indicator: "bsh",
|
||||
fish_indicator: "fsh",
|
||||
zsh_indicator: "zsh",
|
||||
@@ -33,6 +34,7 @@ impl<'a> Default for ShellConfig<'a> {
|
||||
nu_indicator: "nu",
|
||||
xonsh_indicator: "xsh",
|
||||
unknown_indicator: "",
|
||||
style: "white bold",
|
||||
disabled: true,
|
||||
}
|
||||
}
|
||||
|
||||
+43
-8
@@ -30,6 +30,10 @@ pub fn module<'a>(context: &'a Context) -> Option<Module<'a>> {
|
||||
},
|
||||
_ => None,
|
||||
})
|
||||
.map_style(|variable| match variable {
|
||||
"style" => Some(Ok(config.style)),
|
||||
_ => None,
|
||||
})
|
||||
.map(|var| match var {
|
||||
"bash_indicator" => Some(Ok(config.bash_indicator)),
|
||||
"fish_indicator" => Some(Ok(config.fish_indicator)),
|
||||
@@ -80,7 +84,7 @@ mod tests {
|
||||
|
||||
#[test]
|
||||
fn test_bash_default_format() {
|
||||
let expected = Some(format!("{} ", "bsh"));
|
||||
let expected = Some(format!("{} ", Color::White.bold().paint("bsh")));
|
||||
let actual = ModuleRenderer::new("shell")
|
||||
.shell(Shell::Bash)
|
||||
.config(toml::toml! {
|
||||
@@ -109,7 +113,7 @@ mod tests {
|
||||
|
||||
#[test]
|
||||
fn test_fish_default_format() {
|
||||
let expected = Some(format!("{} ", "fsh"));
|
||||
let expected = Some(format!("{} ", Color::White.bold().paint("fsh")));
|
||||
let actual = ModuleRenderer::new("shell")
|
||||
.shell(Shell::Fish)
|
||||
.config(toml::toml! {
|
||||
@@ -138,7 +142,7 @@ mod tests {
|
||||
|
||||
#[test]
|
||||
fn test_zsh_default_format() {
|
||||
let expected = Some(format!("{} ", "zsh"));
|
||||
let expected = Some(format!("{} ", Color::White.bold().paint("zsh")));
|
||||
let actual = ModuleRenderer::new("shell")
|
||||
.shell(Shell::Zsh)
|
||||
.config(toml::toml! {
|
||||
@@ -167,7 +171,7 @@ mod tests {
|
||||
|
||||
#[test]
|
||||
fn test_powershell_default_format() {
|
||||
let expected = Some(format!("{} ", "psh"));
|
||||
let expected = Some(format!("{} ", Color::White.bold().paint("psh")));
|
||||
let actual = ModuleRenderer::new("shell")
|
||||
.shell(Shell::PowerShell)
|
||||
.config(toml::toml! {
|
||||
@@ -196,7 +200,7 @@ mod tests {
|
||||
|
||||
#[test]
|
||||
fn test_ion_default_format() {
|
||||
let expected = Some(format!("{} ", "ion"));
|
||||
let expected = Some(format!("{} ", Color::White.bold().paint("ion")));
|
||||
let actual = ModuleRenderer::new("shell")
|
||||
.shell(Shell::Ion)
|
||||
.config(toml::toml! {
|
||||
@@ -225,7 +229,7 @@ mod tests {
|
||||
|
||||
#[test]
|
||||
fn test_elvish_default_format() {
|
||||
let expected = Some(format!("{} ", "esh"));
|
||||
let expected = Some(format!("{} ", Color::White.bold().paint("esh")));
|
||||
let actual = ModuleRenderer::new("shell")
|
||||
.shell(Shell::Elvish)
|
||||
.config(toml::toml! {
|
||||
@@ -254,7 +258,7 @@ mod tests {
|
||||
|
||||
#[test]
|
||||
fn test_nu_default_format() {
|
||||
let expected = Some(format!("{} ", "nu"));
|
||||
let expected = Some(format!("{} ", Color::White.bold().paint("nu")));
|
||||
let actual = ModuleRenderer::new("shell")
|
||||
.shell(Shell::Nu)
|
||||
.config(toml::toml! {
|
||||
@@ -283,7 +287,7 @@ mod tests {
|
||||
|
||||
#[test]
|
||||
fn test_xonsh_default_format() {
|
||||
let expected = Some(format!("{} ", "xsh"));
|
||||
let expected = Some(format!("{} ", Color::White.bold().paint("xsh")));
|
||||
let actual = ModuleRenderer::new("shell")
|
||||
.shell(Shell::Xonsh)
|
||||
.config(toml::toml! {
|
||||
@@ -341,4 +345,35 @@ mod tests {
|
||||
|
||||
assert_eq!(expected, actual);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_default_style() {
|
||||
let expected = Some(format!("{}", Color::White.bold().paint("fish")));
|
||||
let actual = ModuleRenderer::new("shell")
|
||||
.shell(Shell::Fish)
|
||||
.config(toml::toml! {
|
||||
[shell]
|
||||
format = "[fish]($style)"
|
||||
disabled = false
|
||||
})
|
||||
.collect();
|
||||
|
||||
assert_eq!(expected, actual);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_custom_style() {
|
||||
let expected = Some(format!("{}", Color::Cyan.bold().paint("fish")));
|
||||
let actual = ModuleRenderer::new("shell")
|
||||
.shell(Shell::Fish)
|
||||
.config(toml::toml! {
|
||||
[shell]
|
||||
format = "[fish]($style)"
|
||||
style = "cyan bold"
|
||||
disabled = false
|
||||
})
|
||||
.collect();
|
||||
|
||||
assert_eq!(expected, actual);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user