@@ 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