From: Noor Haddad Date: Tue, 06 Oct 2026 10:05:02 +0300 Subject: [PATCH hello-hut 2/3] cli: add --lang to pick the greeting language To: ~reviewer/hello-hut-devel@lists.hut.md Message-ID: <20261006070500.48213-2-noor@example.org> In-Reply-To: <20261006070500.48213-0-noor@example.org> References: <20261006070500.48213-0-noor@example.org> --- 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 5247b66..7676641 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 7896e27..6982c64 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 60cdf01..723e4f4 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() -- 2.51.0