~reviewer/hello-hut

e9c5dfadb593e1030b54e956c55e0cb43ef2c81d — Noor Haddad 22 days ago 9f84844
cli: add --lang to pick the greeting language
3 files changed, 13 insertions(+), 1 deletions(-)

M src/hello_hut/cli.py
M tests/test_cli.py
M tests/test_greetings.py
M src/hello_hut/cli.py => src/hello_hut/cli.py +5 -1
@@ 8,6 8,7 @@ import sys
from . import __version__
from .config import load_config
from .greetings import DEFAULT_NAME, greet, time_of_day_greeting
from .translations import TRANSLATIONS


def build_parser():


@@ 26,6 27,8 @@ def build_parser():
                        default="auto", help="colorize the output")
    parser.add_argument("--format", choices=("text", "json"), default="text",
                        help="output format (default: text)")
    parser.add_argument("--lang", choices=sorted(TRANSLATIONS), default=None,
                        help="greeting language (default: en)")
    parser.add_argument("--version", action="version",
                        version=f"%(prog)s {__version__}")
    return parser


@@ 45,12 48,13 @@ def main(argv=None):
    config = load_config()
    name = args.name or config.get("name", DEFAULT_NAME)
    shout = args.shout or bool(config.get("shout", False))
    lang = args.lang or config.get("lang", "en")
    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)
    message = greet(name, shout=shout, salutation=salutation, lang=lang)
    for _ in range(args.count):
        if args.format == "json":
            print(json.dumps({"greeting": message, "name": name}))

M tests/test_cli.py => tests/test_cli.py +4 -0
@@ 28,3 28,7 @@ class CliTest(unittest.TestCase):
        code, out = run("Ada", "--format", "json")
        self.assertEqual(code, 0)
        self.assertEqual(json.loads(out), {"greeting": "Hello, Ada!", "name": "Ada"})

    def test_lang(self):
        code, out = run("Ada", "--lang", "es")
        self.assertEqual(out.strip(), "Hola, Ada!")

M tests/test_greetings.py => tests/test_greetings.py +4 -0
@@ 25,6 25,10 @@ class GreetTest(unittest.TestCase):
        self.assertEqual(time_of_day_greeting(at(13)), "Good afternoon")
        self.assertEqual(time_of_day_greeting(at(21)), "Good evening")

    def test_lang(self):
        self.assertEqual(greet("Ada", lang="fr"), "Bonjour, Ada!")
        self.assertEqual(greet("Ada", lang="xx"), "Hello, Ada!")


if __name__ == "__main__":
    unittest.main()