From e9c5dfadb593e1030b54e956c55e0cb43ef2c81d Mon Sep 17 00:00:00 2001 From: Noor Haddad Date: Tue, 6 Oct 2026 10:03:00 +0300 Subject: [PATCH] cli: add --lang to pick the greeting language --- src/hello_hut/cli.py | 6 +++++- tests/test_cli.py | 4 ++++ tests/test_greetings.py | 4 ++++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/hello_hut/cli.py b/src/hello_hut/cli.py index 5247b665047094914bd2901bac7fa7a61687be2d..7676641cfa851fe4b89c21856bd761bc13e855ed 100644 --- a/src/hello_hut/cli.py +++ b/src/hello_hut/cli.py @@ -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})) diff --git a/tests/test_cli.py b/tests/test_cli.py index 7896e274381c1b2dead3f03ebd6b3c475b273693..6982c646829a1e1f7134ab74428845b3d708a434 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -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!") diff --git a/tests/test_greetings.py b/tests/test_greetings.py index 60cdf016c5e6a2032edac09e4ee4cf095c365270..723e4f451b21c6275037399f1565ab1afa36f2d9 100644 --- a/tests/test_greetings.py +++ b/tests/test_greetings.py @@ -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()