diff options
author | Dan Davison <dandavison7@gmail.com> | 2022-04-03 15:22:32 -0400 |
---|---|---|
committer | Dan Davison <dandavison7@gmail.com> | 2022-04-03 15:22:32 -0400 |
commit | 83a363e09b0e2a48d528eccf80ee2cf30c77e081 (patch) | |
tree | cf848ce38c440c76619493e2bbc727c3da384997 | |
parent | fd29606c50625d7cb12e548918bedaf252dc6751 (diff) |
Resurrect sanitizing of env vars removed in 85a07cd1091f1d3cb9d2481a002e1a3e4b6189a8sanitize-env-vars
Ref #1025
-rw-r--r-- | src/env.rs | 29 |
1 files changed, 17 insertions, 12 deletions
@@ -28,21 +28,17 @@ pub struct DeltaEnv { impl DeltaEnv { /// Create a structure with current environment variable pub fn init() -> Self { - let bat_theme = env::var(BAT_THEME).ok(); - let colorterm = env::var(COLORTERM).ok(); + let bat_theme = env_var(BAT_THEME); + let colorterm = env_var(COLORTERM); let experimental_max_line_distance_for_naively_paired_lines = - env::var(DELTA_EXPERIMENTAL_MAX_LINE_DISTANCE_FOR_NAIVELY_PAIRED_LINES).ok(); - let features = env::var(DELTA_FEATURES).ok(); - let git_config_parameters = env::var(GIT_CONFIG_PARAMETERS).ok(); - let git_prefix = env::var(GIT_PREFIX).ok(); - let navigate = env::var(DELTA_NAVIGATE).ok(); + env_var(DELTA_EXPERIMENTAL_MAX_LINE_DISTANCE_FOR_NAIVELY_PAIRED_LINES); + let features = env_var(DELTA_FEATURES); + let git_config_parameters = env_var(GIT_CONFIG_PARAMETERS); + let git_prefix = env_var(GIT_PREFIX); + let navigate = env_var(DELTA_NAVIGATE); let current_dir = env::current_dir().ok(); - let pagers = ( - env::var(DELTA_PAGER).ok(), - env::var(BAT_PAGER).ok(), - env::var(PAGER).ok(), - ); + let pagers = (env_var(DELTA_PAGER), env_var(BAT_PAGER), env_var(PAGER)); Self { bat_theme, @@ -58,6 +54,15 @@ impl DeltaEnv { } } +/// If `name` is set and, after trimming whitespace, is not empty string, then return that trimmed +/// string. Else None. +fn env_var(name: &str) -> Option<String> { + match env::var(name).unwrap_or_else(|_| "".to_string()).trim() { + "" => None, + s => Some(s.to_string()), + } +} + #[cfg(test)] pub mod tests { use super::DeltaEnv; |