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()