~reviewer/hello-hut

ref: 9625423548ea198632914da4967098aa06d119af hello-hut/src/hello_hut/cli.py -rw-r--r-- 1.4 KiB
96254235 — Felix Brandt Add --count to repeat the greeting 4 months ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
"""Command-line interface for hello-hut."""

import argparse
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("--version", action="version",
                        version=f"%(prog)s {__version__}")
    return parser


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):
        print(message)
    return 0