From 948f89ca1c31b64aace58b2e74e86ebe6e9f91db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Varga?= Date: Wed, 1 Jul 2026 15:05:00 +0100 Subject: [PATCH] Respect NO_COLOR and add --color --- src/hello_hut/cli.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/hello_hut/cli.py b/src/hello_hut/cli.py index d6a52e94ef8317b434d31ec13b23237fda6aa621..e5da12157ffae1ca30704fc8a94ab9b29e3fb238 100644 --- a/src/hello_hut/cli.py +++ b/src/hello_hut/cli.py @@ -1,6 +1,7 @@ """Command-line interface for hello-hut.""" import argparse +import os import sys from . import __version__ @@ -20,11 +21,22 @@ def build_parser(): help="say good morning, afternoon or evening") parser.add_argument("--count", type=int, default=1, metavar="N", help="repeat the greeting N times (default: 1)") + parser.add_argument("--color", choices=("auto", "always", "never"), + default="auto", help="colorize the output") parser.add_argument("--version", action="version", version=f"%(prog)s {__version__}") return parser +def use_color(mode, stream=sys.stdout): + """Decide whether to colorize, honouring NO_COLOR (https://no-color.org).""" + if mode == "always": + return True + if mode == "never" or os.environ.get("NO_COLOR"): + return False + return stream.isatty() + + def main(argv=None): args = build_parser().parse_args(argv) config = load_config() @@ -37,5 +49,8 @@ def main(argv=None): salutation = time_of_day_greeting() if args.time_of_day else None message = greet(name, shout=shout, salutation=salutation) for _ in range(args.count): - print(message) + if use_color(args.color): + print(f"\033[1;32m{message}\033[0m") + else: + print(message) return 0