From 702ad274cf4b77c3b1ebf64c4e94b393de76d866 Mon Sep 17 00:00:00 2001 From: Gimbar Date: Sun, 22 Sep 2019 22:32:11 +0200 Subject: [PATCH] feat: Add option to always show the username module (#408) --- docs/config/README.md | 2 ++ src/modules/username.rs | 7 +++++-- tests/testsuite/username.rs | 18 +++++++++++++++++- 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/docs/config/README.md b/docs/config/README.md index 0ba0b48b..be0bce93 100644 --- a/docs/config/README.md +++ b/docs/config/README.md @@ -731,6 +731,7 @@ The module will be shown if any of the following conditions are met: - The current user is root - The current user isn't the same as the one that is logged in - The user is currently connected as an SSH session +- The variable `show_always` is set to true ### Options @@ -738,6 +739,7 @@ The module will be shown if any of the following conditions are met: | ------------ | --------------- | ------------------------------------- | | `style_root` | `"bold red"` | The style used when the user is root. | | `style_user` | `"bold yellow"` | The style used for non-root users. | +| `show_always`| `false` | Always shows the `username` module. | | `disabled` | `false` | Disables the `username` module. | ### Example diff --git a/src/modules/username.rs b/src/modules/username.rs index c2789698..376da86c 100644 --- a/src/modules/username.rs +++ b/src/modules/username.rs @@ -17,8 +17,11 @@ pub fn module<'a>(context: &'a Context) -> Option> { const ROOT_UID: Option = Some(0); let user_uid = get_uid(); - if user != logname || ssh_connection.is_some() || user_uid == ROOT_UID { - let mut module = context.new_module("username"); + + let mut module = context.new_module("username"); + let show_always = module.config_value_bool("show_always").unwrap_or(false); + + if user != logname || ssh_connection.is_some() || user_uid == ROOT_UID || show_always { let module_style = get_mod_style(user_uid, &module); module.set_style(module_style); module.new_segment("username", &user?); diff --git a/tests/testsuite/username.rs b/tests/testsuite/username.rs index 49b1d637..08f4e668 100644 --- a/tests/testsuite/username.rs +++ b/tests/testsuite/username.rs @@ -1,7 +1,7 @@ use ansi_term::Color; use std::io; -use crate::common; +use crate::common::{self, TestCommand}; // TODO: Add tests for if root user (UID == 0) // Requires mocking @@ -61,3 +61,19 @@ fn ssh_connection() -> io::Result<()> { assert_eq!(expected, actual); Ok(()) } + +#[test] +fn show_always() -> io::Result<()> { + let output = common::render_module("username") + .env("USER", "astronaut") + .use_config(toml::toml! { + [username] + show_always = true}) + .output()?; + let actual = String::from_utf8(output.stdout).unwrap(); + + let expected = format!("via {} ", Color::Yellow.bold().paint("astronaut")); + + assert_eq!(expected, actual); + Ok(()) +}