"""Command-line interface for hello-hut.""" import argparse import os import sys from . import __version__ from .config import load_config from .greetings import DEFAULT_NAME, greet, time_of_day_greeting def build_parser(): parser = argparse.ArgumentParser( prog="hello-hut", description="A friendly greeting tool for your terminal.", ) parser.add_argument("name", nargs="?", help="who to greet") parser.add_argument("--shout", action="store_true", help="print the greeting in capitals") parser.add_argument("--time-of-day", action="store_true", 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() name = args.name or config.get("name", DEFAULT_NAME) shout = args.shout or bool(config.get("shout", False)) if args.count < 1: print("hello-hut: --count must be at least 1", file=sys.stderr) return 2 salutation = time_of_day_greeting() if args.time_of_day else None message = greet(name, shout=shout, salutation=salutation) for _ in range(args.count): if use_color(args.color): print(f"\033[1;32m{message}\033[0m") else: print(message) return 0