feat(username): add aliases option (#5855)
* Create place to put it in the config * Initial functional version * Fix grammar * Add option documentation to README * Add test for two aliases and emoji translation * Remove println * Rewrite match as iflet * Improve converting the reference * Format file * Try to restore autoformat of markdown * Replace toml:Map with concrete IndexMap * Update schema * Add option that got lost
This commit is contained in:
parent
335c514e9e
commit
9c1eaddae1
|
@ -1784,6 +1784,7 @@
|
||||||
},
|
},
|
||||||
"username": {
|
"username": {
|
||||||
"default": {
|
"default": {
|
||||||
|
"aliases": {},
|
||||||
"detect_env_vars": [],
|
"detect_env_vars": [],
|
||||||
"disabled": false,
|
"disabled": false,
|
||||||
"format": "[$user]($style) in ",
|
"format": "[$user]($style) in ",
|
||||||
|
@ -6129,6 +6130,13 @@
|
||||||
"disabled": {
|
"disabled": {
|
||||||
"default": false,
|
"default": false,
|
||||||
"type": "boolean"
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
"aliases": {
|
||||||
|
"default": {},
|
||||||
|
"type": "object",
|
||||||
|
"additionalProperties": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"additionalProperties": false
|
"additionalProperties": false
|
||||||
|
|
|
@ -4505,6 +4505,7 @@ these variables, one workaround is to set one of them with a dummy value.
|
||||||
| `format` | `'[$user]($style) in '` | The format for the module. |
|
| `format` | `'[$user]($style) in '` | The format for the module. |
|
||||||
| `show_always` | `false` | Always shows the `username` module. |
|
| `show_always` | `false` | Always shows the `username` module. |
|
||||||
| `disabled` | `false` | Disables the `username` module. |
|
| `disabled` | `false` | Disables the `username` module. |
|
||||||
|
| `aliases` | `{}` | Translate system usernames to something else |
|
||||||
|
|
||||||
### Variables
|
### Variables
|
||||||
|
|
||||||
|
@ -4526,6 +4527,7 @@ style_root = 'black bold'
|
||||||
format = 'user: [$user]($style) '
|
format = 'user: [$user]($style) '
|
||||||
disabled = false
|
disabled = false
|
||||||
show_always = true
|
show_always = true
|
||||||
|
aliases = { "corpuser034g" = "matchai" }
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Hide the hostname in remote tmux sessions
|
#### Hide the hostname in remote tmux sessions
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
use indexmap::IndexMap;
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
#[derive(Clone, Deserialize, Serialize)]
|
#[derive(Clone, Deserialize, Serialize)]
|
||||||
|
@ -14,6 +15,7 @@ pub struct UsernameConfig<'a> {
|
||||||
pub style_user: &'a str,
|
pub style_user: &'a str,
|
||||||
pub show_always: bool,
|
pub show_always: bool,
|
||||||
pub disabled: bool,
|
pub disabled: bool,
|
||||||
|
pub aliases: IndexMap<String, &'a str>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a> Default for UsernameConfig<'a> {
|
impl<'a> Default for UsernameConfig<'a> {
|
||||||
|
@ -25,6 +27,7 @@ impl<'a> Default for UsernameConfig<'a> {
|
||||||
style_user: "yellow bold",
|
style_user: "yellow bold",
|
||||||
show_always: false,
|
show_always: false,
|
||||||
disabled: false,
|
disabled: false,
|
||||||
|
aliases: IndexMap::new(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,6 +40,10 @@ pub fn module<'a>(context: &'a Context) -> Option<Module<'a>> {
|
||||||
return None; // [A]
|
return None; // [A]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if let Some(&alias) = config.aliases.get(&username) {
|
||||||
|
username = alias.to_string();
|
||||||
|
}
|
||||||
|
|
||||||
let parsed = StringFormatter::new(config.format).and_then(|formatter| {
|
let parsed = StringFormatter::new(config.format).and_then(|formatter| {
|
||||||
formatter
|
formatter
|
||||||
.map_style(|variable| match variable {
|
.map_style(|variable| match variable {
|
||||||
|
@ -323,4 +327,40 @@ mod tests {
|
||||||
|
|
||||||
assert_eq!(expected, actual.as_deref());
|
assert_eq!(expected, actual.as_deref());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_alias() {
|
||||||
|
let actual = ModuleRenderer::new("username")
|
||||||
|
.env(super::USERNAME_ENV_VAR, "astronaut")
|
||||||
|
.config(toml::toml! {
|
||||||
|
[username]
|
||||||
|
show_always = true
|
||||||
|
aliases = { "astronaut" = "skywalker" }
|
||||||
|
|
||||||
|
style_root = ""
|
||||||
|
style_user = ""
|
||||||
|
})
|
||||||
|
.collect();
|
||||||
|
let expected = Some("skywalker in ");
|
||||||
|
|
||||||
|
assert_eq!(expected, actual.as_deref());
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_alias_emoji() {
|
||||||
|
let actual = ModuleRenderer::new("username")
|
||||||
|
.env(super::USERNAME_ENV_VAR, "kaas")
|
||||||
|
.config(toml::toml! {
|
||||||
|
[username]
|
||||||
|
show_always = true
|
||||||
|
aliases = { "a" = "b", "kaas" = "🧀" }
|
||||||
|
|
||||||
|
style_root = ""
|
||||||
|
style_user = ""
|
||||||
|
})
|
||||||
|
.collect();
|
||||||
|
let expected = Some("🧀 in ");
|
||||||
|
|
||||||
|
assert_eq!(expected, actual.as_deref());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue