From: Daan De Meyer Date: Wed, 11 Sep 2024 17:48:08 +0000 (+0200) Subject: Beef up tty checks for color handling X-Git-Tag: v25~304 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=07778dc8803ad57492cad102e6ca88327df35cfe;p=thirdparty%2Fmkosi.git Beef up tty checks for color handling Let's use the same checks used by systemd. Fixes #3013 --- diff --git a/mkosi/log.py b/mkosi/log.py index 15fddad47..3895170b9 100644 --- a/mkosi/log.py +++ b/mkosi/log.py @@ -14,13 +14,20 @@ ARG_DEBUG_SHELL = contextvars.ContextVar("debug-shell", default=False) LEVEL = 0 +def terminal_is_dumb() -> bool: + if not sys.stdout.isatty() and not sys.stderr.isatty(): + return True + + return os.getenv("TERM", "") == "dumb" + + class Style: - bold: Final[str] = "\033[0;1;39m" if sys.stderr.isatty() else "" - blue: Final[str] = "\033[0;1;34m" if sys.stderr.isatty() else "" - gray: Final[str] = "\033[0;38;5;245m" if sys.stderr.isatty() else "" - red: Final[str] = "\033[31;1m" if sys.stderr.isatty() else "" - yellow: Final[str] = "\033[33;1m" if sys.stderr.isatty() else "" - reset: Final[str] = "\033[0m" if sys.stderr.isatty() else "" + bold: Final[str] = "\033[0;1;39m" if not terminal_is_dumb() else "" + blue: Final[str] = "\033[0;1;34m" if not terminal_is_dumb() else "" + gray: Final[str] = "\033[0;38;5;245m" if not terminal_is_dumb() else "" + red: Final[str] = "\033[31;1m" if not terminal_is_dumb() else "" + yellow: Final[str] = "\033[33;1m" if not terminal_is_dumb() else "" + reset: Final[str] = "\033[0m" if not terminal_is_dumb() else "" def die(message: str,