From aab1d3db59f33bc2fde975ffb9e7c9209a9ec4e1 Mon Sep 17 00:00:00 2001 From: Max Zhuravsky Date: Thu, 25 Nov 2021 23:37:02 +0300 Subject: [PATCH] [no-color] - implement NO_COLOR support --- .gitignore | 3 +++ src/options/theme.rs | 11 ++++++++--- src/options/vars.rs | 3 +++ 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index ede6ac0..0ae41f6 100644 --- a/.gitignore +++ b/.gitignore @@ -19,3 +19,6 @@ parts prime stage *.snap + +# IntelliJ IDEA files +.idea diff --git a/src/options/theme.rs b/src/options/theme.rs index 02309f7..12d24ec 100644 --- a/src/options/theme.rs +++ b/src/options/theme.rs @@ -5,7 +5,7 @@ use crate::theme::{Options, UseColours, ColourScale, Definitions}; impl Options { pub fn deduce(matches: &MatchedFlags<'_>, vars: &V) -> Result { - let use_colours = UseColours::deduce(matches)?; + let use_colours = UseColours::deduce(matches, vars)?; let colour_scale = ColourScale::deduce(matches)?; let definitions = if use_colours == UseColours::Never { @@ -21,10 +21,15 @@ impl Options { impl UseColours { - fn deduce(matches: &MatchedFlags<'_>) -> Result { + fn deduce(matches: &MatchedFlags<'_>, vars: &V) -> Result { + let default_value = match vars.get(vars::NO_COLOR) { + Some(_) => Self::Never, + None => Self::Automatic, + }; + let word = match matches.get_where(|f| f.matches(&flags::COLOR) || f.matches(&flags::COLOUR))? { Some(w) => w, - None => return Ok(Self::Automatic), + None => return Ok(default_value), }; if word == "always" { diff --git a/src/options/vars.rs b/src/options/vars.rs index a8fc40e..9ce6cc5 100644 --- a/src/options/vars.rs +++ b/src/options/vars.rs @@ -15,6 +15,9 @@ pub static COLUMNS: &str = "COLUMNS"; /// Environment variable used to datetime format. pub static TIME_STYLE: &str = "TIME_STYLE"; +/// Environment variable used to disable colors. +/// See: https://no-color.org/ +pub static NO_COLOR: &str = "NO_COLOR"; // exa-specific variables