Introduce distinct colors per output function. For elog and eerror the colors remain the same but the names change. For einfo and eqawarn, use darker colors to distinguish them.
Signed-off-by: Michał Górny <mgo...@gentoo.org> --- bin/isolated-functions.sh | 30 +++++++++++------- bin/save-ebuild-env.sh | 6 ++-- lib/portage/elog/messages.py | 10 +++--- lib/portage/elog/mod_echo.py | 4 +-- lib/portage/output.py | 59 +++++++++++++++++++++++++++++++----- 5 files changed, 81 insertions(+), 28 deletions(-) diff --git a/bin/isolated-functions.sh b/bin/isolated-functions.sh index 3e79ea6e3..df806d403 100644 --- a/bin/isolated-functions.sh +++ b/bin/isolated-functions.sh @@ -270,7 +270,7 @@ eqawarn() { __elog_base QA "$*" [[ ${RC_ENDCOL} != "yes" && ${LAST_E_CMD} == "ebegin" ]] && echo >&2 echo -e "$@" | while read -r ; do - echo " ${PORTAGE_COLOR_WARN}*${PORTAGE_COLOR_NORMAL} ${REPLY}" >&2 + echo " ${PORTAGE_COLOR_QAWARN}*${PORTAGE_COLOR_NORMAL} ${REPLY}" >&2 done LAST_E_CMD="eqawarn" return 0 @@ -280,7 +280,7 @@ elog() { __elog_base LOG "$*" [[ ${RC_ENDCOL} != "yes" && ${LAST_E_CMD} == "ebegin" ]] && echo >&2 echo -e "$@" | while read -r ; do - echo " ${PORTAGE_COLOR_GOOD}*${PORTAGE_COLOR_NORMAL} ${REPLY}" >&2 + echo " ${PORTAGE_COLOR_LOG}*${PORTAGE_COLOR_NORMAL} ${REPLY}" >&2 done LAST_E_CMD="elog" return 0 @@ -290,7 +290,7 @@ einfo() { __elog_base INFO "$*" [[ ${RC_ENDCOL} != "yes" && ${LAST_E_CMD} == "ebegin" ]] && echo >&2 echo -e "$@" | while read -r ; do - echo " ${PORTAGE_COLOR_GOOD}*${PORTAGE_COLOR_NORMAL} ${REPLY}" >&2 + echo " ${PORTAGE_COLOR_INFO}*${PORTAGE_COLOR_NORMAL} ${REPLY}" >&2 done LAST_E_CMD="einfo" return 0 @@ -299,7 +299,7 @@ einfo() { einfon() { __elog_base INFO "$*" [[ ${RC_ENDCOL} != "yes" && ${LAST_E_CMD} == "ebegin" ]] && echo >&2 - echo -ne " ${PORTAGE_COLOR_GOOD}*${PORTAGE_COLOR_NORMAL} $*" >&2 + echo -ne " ${PORTAGE_COLOR_INFO}*${PORTAGE_COLOR_NORMAL} $*" >&2 LAST_E_CMD="einfon" return 0 } @@ -318,7 +318,7 @@ eerror() { __elog_base ERROR "$*" [[ ${RC_ENDCOL} != "yes" && ${LAST_E_CMD} == "ebegin" ]] && echo >&2 echo -e "$@" | while read -r ; do - echo " ${PORTAGE_COLOR_BAD}*${PORTAGE_COLOR_NORMAL} ${RC_INDENTATION}${REPLY}" >&2 + echo " ${PORTAGE_COLOR_ERR}*${PORTAGE_COLOR_NORMAL} ${RC_INDENTATION}${REPLY}" >&2 done LAST_E_CMD="eerror" return 0 @@ -378,12 +378,16 @@ __unset_colors() { COLS=80 ENDCOL= - PORTAGE_COLOR_GOOD= - PORTAGE_COLOR_WARN= PORTAGE_COLOR_BAD= + PORTAGE_COLOR_BRACKET= + PORTAGE_COLOR_ERR= + PORTAGE_COLOR_GOOD= PORTAGE_COLOR_HILITE= + PORTAGE_COLOR_INFO= + PORTAGE_COLOR_LOG= PORTAGE_COLOR_NORMAL= - PORTAGE_COLOR_BRACKET= + PORTAGE_COLOR_QAWARN= + PORTAGE_COLOR_WARN= } __set_colors() { @@ -403,12 +407,16 @@ __set_colors() { if [ -n "${PORTAGE_COLORMAP}" ] ; then eval ${PORTAGE_COLORMAP} else - PORTAGE_COLOR_GOOD=$'\e[32;01m' - PORTAGE_COLOR_WARN=$'\e[33;01m' PORTAGE_COLOR_BAD=$'\e[31;01m' - PORTAGE_COLOR_HILITE=$'\e[36;01m' PORTAGE_COLOR_BRACKET=$'\e[34;01m' + PORTAGE_COLOR_ERR=$'\e[31;01m' + PORTAGE_COLOR_GOOD=$'\e[32;01m' + PORTAGE_COLOR_HILITE=$'\e[36;01m' + PORTAGE_COLOR_INFO=$'\e[32m' + PORTAGE_COLOR_LOG=$'\e[32;01m' PORTAGE_COLOR_NORMAL=$'\e[0m' + PORTAGE_COLOR_QAWARN=$'\e[33m' + PORTAGE_COLOR_WARN=$'\e[33;01m' fi } diff --git a/bin/save-ebuild-env.sh b/bin/save-ebuild-env.sh index 8d2ec67ed..98808814b 100644 --- a/bin/save-ebuild-env.sh +++ b/bin/save-ebuild-env.sh @@ -102,8 +102,10 @@ __save_ebuild_env() { LAST_E_CMD LAST_E_LEN LD_PRELOAD MISC_FUNCTIONS_ARGS MOPREFIX \ NOCOLOR PKGDIR PKGUSE PKG_LOGDIR PKG_TMPDIR \ PORTAGE_BASHRC_FILES PORTAGE_BASHRCS_SOURCED \ - PORTAGE_COLOR_BAD PORTAGE_COLOR_BRACKET PORTAGE_COLOR_GOOD \ - PORTAGE_COLOR_HILITE PORTAGE_COLOR_NORMAL PORTAGE_COLOR_WARN \ + PORTAGE_COLOR_BAD PORTAGE_COLOR_BRACKET PORTAGE_COLOR_ERR \ + PORTAGE_COLOR_GOOD PORTAGE_COLOR_HILITE PORTAGE_COLOR_INFO \ + PORTAGE_COLOR_LOG PORTAGE_COLOR_NORMAL PORTAGE_COLOR_QAWARN \ + PORTAGE_COLOR_WARN \ PORTAGE_COMPRESS PORTAGE_COMPRESS_EXCLUDE_SUFFIXES \ PORTAGE_DOHTML_UNWARNED_SKIPPED_EXTENSIONS \ PORTAGE_DOHTML_UNWARNED_SKIPPED_FILES \ diff --git a/lib/portage/elog/messages.py b/lib/portage/elog/messages.py index 923e10b69..6a67a45de 100644 --- a/lib/portage/elog/messages.py +++ b/lib/portage/elog/messages.py @@ -125,7 +125,7 @@ def _elog_base(level, msg, phase="other", key=None, color=None, out=None): out = sys.stdout if color is None: - color = "GOOD" + color = "INFO" msg = _unicode_decode(msg, encoding=_encodings["content"], errors="replace") @@ -183,11 +183,11 @@ def _reset_buffer(): # creating and exporting the actual messaging functions _functions = { - "einfo": ("INFO", "GOOD"), - "elog": ("LOG", "GOOD"), + "einfo": ("INFO", "INFO"), + "elog": ("LOG", "LOG"), "ewarn": ("WARN", "WARN"), - "eqawarn": ("QA", "WARN"), - "eerror": ("ERROR", "BAD"), + "eqawarn": ("QA", "QAWARN"), + "eerror": ("ERROR", "ERR"), } diff --git a/lib/portage/elog/mod_echo.py b/lib/portage/elog/mod_echo.py index fa9203c32..a63939988 100644 --- a/lib/portage/elog/mod_echo.py +++ b/lib/portage/elog/mod_echo.py @@ -60,10 +60,10 @@ def _finalize(): for msgtype, msgcontent in logentries[phase]: fmap = { "INFO": printer.einfo, + "LOG": printer.elog, "WARN": printer.ewarn, "ERROR": printer.eerror, - "LOG": printer.einfo, - "QA": printer.ewarn, + "QA": printer.eqawarn, } if isinstance(msgcontent, str): msgcontent = [msgcontent] diff --git a/lib/portage/output.py b/lib/portage/output.py index 9d8601b24..42f487f8a 100644 --- a/lib/portage/output.py +++ b/lib/portage/output.py @@ -140,12 +140,16 @@ codes["darkyellow"] = codes["0xAAAA00"] # Colors from /etc/init.d/functions.sh -_styles["NORMAL"] = ("normal",) -_styles["GOOD"] = ("green",) -_styles["WARN"] = ("yellow",) _styles["BAD"] = ("red",) -_styles["HILITE"] = ("teal",) _styles["BRACKET"] = ("blue",) +_styles["ERR"] = ("red",) +_styles["GOOD"] = ("green",) +_styles["HILITE"] = ("teal",) +_styles["INFO"] = ("darkgreen",) +_styles["LOG"] = ("green",) +_styles["NORMAL"] = ("normal",) +_styles["QAWARN"] = ("brown",) +_styles["WARN"] = ("yellow",) # Portage functions _styles["INFORM"] = ("darkgreen",) @@ -377,7 +381,18 @@ def style_to_ansi_code(style): def colormap(): mycolors = [] - for c in ("GOOD", "WARN", "BAD", "HILITE", "BRACKET", "NORMAL"): + for c in ( + "BAD", + "BRACKET", + "ERR", + "GOOD", + "HILITE", + "INFO", + "LOG", + "NORMAL", + "QAWARN", + "WARN", + ): mycolors.append("PORTAGE_COLOR_{}=$'{}'".format(c, style_to_ansi_code(c))) return "\n".join(mycolors) @@ -665,7 +680,7 @@ class EOutput: if not self.quiet: if self.__last_e_cmd == "ebegin": self._write(out, "\n") - self._write(out, colorize("BAD", " * ") + msg + "\n") + self._write(out, colorize("ERR", " * ") + msg + "\n") self.__last_e_cmd = "eerror" def einfo(self, msg): @@ -679,7 +694,7 @@ class EOutput: if not self.quiet: if self.__last_e_cmd == "ebegin": self._write(out, "\n") - self._write(out, colorize("GOOD", " * ") + msg + "\n") + self._write(out, colorize("INFO", " * ") + msg + "\n") self.__last_e_cmd = "einfo" def einfon(self, msg): @@ -693,9 +708,37 @@ class EOutput: if not self.quiet: if self.__last_e_cmd == "ebegin": self._write(out, "\n") - self._write(out, colorize("GOOD", " * ") + msg) + self._write(out, colorize("INFO", " * ") + msg) self.__last_e_cmd = "einfon" + def eqawarn(self, msg): + """ + Shows a QA warning. + + @param msg: A very brief (shorter than one line) warning message. + @type msg: StringType + """ + out = sys.stderr + if not self.quiet: + if self.__last_e_cmd == "ebegin": + self._write(out, "\n") + self._write(out, colorize("QAWARN", " * ") + msg + "\n") + self.__last_e_cmd = "ewarn" + + def elog(self, msg): + """ + Shows a logged informative message terminated with a newline. + + @param msg: A very brief (shorter than one line) informative message. + @type msg: StringType + """ + out = sys.stdout + if not self.quiet: + if self.__last_e_cmd == "ebegin": + self._write(out, "\n") + self._write(out, colorize("LOG", " * ") + msg + "\n") + self.__last_e_cmd = "elog" + def ewarn(self, msg): """ Shows a warning message. -- 2.33.0