summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMax Zhuravsky <paperlark@yandex.com>2021-11-25 23:37:02 +0300
committerMax Zhuravsky <paperlark@yandex.com>2021-11-25 23:37:02 +0300
commitaab1d3db59f33bc2fde975ffb9e7c9209a9ec4e1 (patch)
treebbf337cb0ed1994440cd79cccf80b530687ec6b5
parentb32f441851fdad8b5e3a6aa8cf23e276d7cc1278 (diff)
[no-color] - implement NO_COLOR support
-rw-r--r--.gitignore3
-rw-r--r--src/options/theme.rs11
-rw-r--r--src/options/vars.rs3
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<V: Vars>(matches: &MatchedFlags<'_>, vars: &V) -> Result<Self, OptionsError> {
- 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<Self, OptionsError> {
+ fn deduce<V: Vars>(matches: &MatchedFlags<'_>, vars: &V) -> Result<Self, OptionsError> {
+ 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