mirror of
https://github.com/Kitware/CMake.git
synced 2026-02-13 10:39:07 -06:00
Merge topic 'stdio-no-color'
6aa604ef10 StdIo: Honor NO_COLOR environment variable
Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !10805
This commit is contained in:
@@ -9,11 +9,11 @@ Set to ``0`` to tell command-line tools not to print color
|
||||
messages even if connected to a terminal.
|
||||
This is a `common convention`_ among command-line tools in general.
|
||||
|
||||
See also the :envvar:`CLICOLOR_FORCE` environment variable.
|
||||
:envvar:`CLICOLOR_FORCE`, if activated, takes precedence over
|
||||
See also the :envvar:`NO_COLOR` and :envvar:`CLICOLOR_FORCE` environment
|
||||
variables. If either of them is activated, it takes precedence over
|
||||
:envvar:`!CLICOLOR`.
|
||||
|
||||
See the :variable:`CMAKE_COLOR_DIAGNOSTICS` variable to control
|
||||
color in a generated build system.
|
||||
|
||||
.. _`common convention`: https://web.archive.org/web/20230417221418/https://bixense.com/clicolors/
|
||||
.. _`common convention`: https://web.archive.org/web/20250410160803/https://bixense.com/clicolors/
|
||||
|
||||
@@ -9,11 +9,12 @@ Set to a non-empty value, other than ``0``, to tell command-line
|
||||
tools to print color messages even if not connected to a terminal.
|
||||
This is a `common convention`_ among command-line tools in general.
|
||||
|
||||
See also the :envvar:`CLICOLOR` environment variable.
|
||||
:envvar:`!CLICOLOR_FORCE`, if activated, takes precedence over
|
||||
:envvar:`CLICOLOR`.
|
||||
See also the :envvar:`NO_COLOR` and :envvar:`CLICOLOR` environment variables.
|
||||
If :envvar:`NO_COLOR` is activated, it takes precedence over
|
||||
:envvar:`!CLICOLOR_FORCE`. Otherwise, if :envvar:`!CLICOLOR_FORCE` is
|
||||
activated, it takes precedence over :envvar:`CLICOLOR`.
|
||||
|
||||
See the :variable:`CMAKE_COLOR_DIAGNOSTICS` variable to control
|
||||
color in a generated build system.
|
||||
|
||||
.. _`common convention`: https://web.archive.org/web/20230417221418/https://bixense.com/clicolors/
|
||||
.. _`common convention`: https://web.archive.org/web/20250410160803/https://bixense.com/clicolors/
|
||||
|
||||
19
Help/envvar/NO_COLOR.rst
Normal file
19
Help/envvar/NO_COLOR.rst
Normal file
@@ -0,0 +1,19 @@
|
||||
NO_COLOR
|
||||
--------
|
||||
|
||||
.. versionadded:: 4.1
|
||||
|
||||
.. include:: include/ENV_VAR.rst
|
||||
|
||||
Set to a non-empty value, other than ``0``, to tell command-line
|
||||
tools not to print color messages even if connected to a terminal.
|
||||
This is a `common convention`_ among command-line tools in general.
|
||||
|
||||
See also the :envvar:`CLICOLOR_FORCE` and :envvar:`CLICOLOR` environment
|
||||
variables. If :envvar:`!NO_COLOR` is activated, it takes precedence
|
||||
over both of them.
|
||||
|
||||
See the :variable:`CMAKE_COLOR_DIAGNOSTICS` variable to control
|
||||
color in a generated build system.
|
||||
|
||||
.. _`common convention`: https://web.archive.org/web/20250410160803/https://bixense.com/clicolors/
|
||||
@@ -32,6 +32,7 @@ Environment Variables that Change Behavior
|
||||
/envvar/CMAKE_PROGRAM_PATH
|
||||
/envvar/CMAKE_TLS_VERIFY
|
||||
/envvar/CMAKE_TLS_VERSION
|
||||
/envvar/NO_COLOR
|
||||
/envvar/SSL_CERT_DIR
|
||||
/envvar/SSL_CERT_FILE
|
||||
|
||||
|
||||
@@ -101,6 +101,13 @@ void SetVT100Attrs(std::ostream& os, TermAttrSet const& attrs)
|
||||
}
|
||||
|
||||
auto const TermEnv = []() -> cm::optional<TermKind> {
|
||||
/* Disable color according to https://bixense.com/clicolors/ convention. */
|
||||
if (cm::optional<std::string> noColor =
|
||||
cmSystemTools::GetEnvVar("NO_COLOR")) {
|
||||
if (!noColor->empty() && *noColor != "0"_s) {
|
||||
return TermKind::None;
|
||||
}
|
||||
}
|
||||
/* Force color according to https://bixense.com/clicolors/ convention. */
|
||||
if (cm::optional<std::string> cliColorForce =
|
||||
cmSystemTools::GetEnvVar("CLICOLOR_FORCE")) {
|
||||
|
||||
@@ -29,6 +29,7 @@ if(NOT CTEST_CONFIGURATION_TYPE)
|
||||
endif()
|
||||
|
||||
# Isolate tests from user configuration in the environment.
|
||||
unset(ENV{NO_COLOR})
|
||||
unset(ENV{CLICOLOR})
|
||||
unset(ENV{CLICOLOR_FORCE})
|
||||
unset(ENV{CMAKE_GENERATOR})
|
||||
|
||||
Reference in New Issue
Block a user