split stdout & stderr auto colouring

thus for some reason if one is connected to a tty and the other a file,
we still get colour in the tty by default.

in terms of options, --color and --no-color override both, no granular
ones added since it's not worth it imo.

this is backwards compatible with custom configs setting `_COLOR`.

it could be argued that setting $_COLOR to "false" for the auto non-tty
cases is redundant, which it is, but it doesn't hurt to do so; it ensures
that if anything (inc. 3rd-party hooks and such) rely on it that it
remains correct; and ensures that if anything in the future mistakenly
uses $_COLOR instead of $_COLOR_OUT|$_COLOR_ERR that at least that will
only be broken for the use case of only one of stdout|sdterr being a tty.

Gbp-Dch: Ignore
This commit is contained in:
Lyndon Brown 2020-03-13 18:36:26 +00:00 committed by Raphaël Hertzog
parent 09b279b7bc
commit ca520eb5f0
3 changed files with 19 additions and 6 deletions

View File

@ -34,11 +34,15 @@ Arguments ()
--color)
_COLOR="true"
_COLOR_OUT="true"
_COLOR_ERR="true"
shift
;;
--no-color)
_COLOR="false"
_COLOR_OUT="false"
_COLOR_ERR="false"
shift
;;

View File

@ -296,10 +296,19 @@ Set_config_defaults ()
esac
# Setting live build options
if [ -t 1 ] && [ -t 2 ]; then
_COLOR="${_COLOR:-true}"
if [ -z "${_COLOR}" ]; then
_COLOR="auto"
_COLOR_OUT="true"
_COLOR_ERR="true"
if [ ! -t 1 ]; then
_COLOR_OUT="false"
fi
if [ ! -t 2 ]; then
_COLOR_ERR="false"
fi
else
_COLOR="${_COLOR:-false}"
_COLOR_OUT="${_COLOR}"
_COLOR_ERR="${_COLOR}"
fi
_BREAKPOINTS="${_BREAKPOINTS:-false}"
_DEBUG="${_DEBUG:-false}"

View File

@ -34,7 +34,7 @@ Echo_error ()
shift
local PREFIX="${RED}E${NO_COLOR}"
if [ "${_COLOR}" = "false" ]; then
if [ "${_COLOR_ERR}" = "false" ]; then
PREFIX="E"
fi
@ -49,7 +49,7 @@ Echo_message ()
shift
local PREFIX="${PURPLE}P${NO_COLOR}"
if [ "${_COLOR}" = "false" ]; then
if [ "${_COLOR_OUT}" = "false" ]; then
PREFIX="P"
fi
@ -73,7 +73,7 @@ Echo_warning ()
shift
local PREFIX="${YELLOW}W${NO_COLOR}"
if [ "${_COLOR}" = "false" ]; then
if [ "${_COLOR_ERR}" = "false" ]; then
PREFIX="W"
fi