From 83a363e09b0e2a48d528eccf80ee2cf30c77e081 Mon Sep 17 00:00:00 2001 From: Dan Davison Date: Sun, 3 Apr 2022 15:22:32 -0400 Subject: Resurrect sanitizing of env vars removed in 85a07cd1091f1d3cb9d2481a002e1a3e4b6189a8 Ref #1025 --- src/env.rs | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/src/env.rs b/src/env.rs index 8735d913..51949156 100644 --- a/src/env.rs +++ b/src/env.rs @@ -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 { + match env::var(name).unwrap_or_else(|_| "".to_string()).trim() { + "" => None, + s => Some(s.to_string()), + } +} + #[cfg(test)] pub mod tests { use super::DeltaEnv; -- cgit v1.2.3