From 929dcec484a45211b2ba56d871da38803b51c085 Mon Sep 17 00:00:00 2001 From: Priya Raman Date: Tue, 14 Jul 2026 10:00:00 +0530 Subject: [PATCH] Add --format=json for scripting --- src/hello_hut/cli.py | 7 ++++++- tests/test_cli.py | 6 ++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/hello_hut/cli.py b/src/hello_hut/cli.py index e5da12157ffae1ca30704fc8a94ab9b29e3fb238..5247b665047094914bd2901bac7fa7a61687be2d 100644 --- a/src/hello_hut/cli.py +++ b/src/hello_hut/cli.py @@ -1,6 +1,7 @@ """Command-line interface for hello-hut.""" import argparse +import json import os import sys @@ -23,6 +24,8 @@ def build_parser(): help="repeat the greeting N times (default: 1)") parser.add_argument("--color", choices=("auto", "always", "never"), default="auto", help="colorize the output") + parser.add_argument("--format", choices=("text", "json"), default="text", + help="output format (default: text)") parser.add_argument("--version", action="version", version=f"%(prog)s {__version__}") return parser @@ -49,7 +52,9 @@ def main(argv=None): salutation = time_of_day_greeting() if args.time_of_day else None message = greet(name, shout=shout, salutation=salutation) for _ in range(args.count): - if use_color(args.color): + if args.format == "json": + print(json.dumps({"greeting": message, "name": name})) + elif use_color(args.color): print(f"\033[1;32m{message}\033[0m") else: print(message) diff --git a/tests/test_cli.py b/tests/test_cli.py index 4f6e0ab3d7543742432f253cbfba9438fa6f1120..7896e274381c1b2dead3f03ebd6b3c475b273693 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -1,4 +1,5 @@ import io +import json import unittest from contextlib import redirect_stdout @@ -22,3 +23,8 @@ class CliTest(unittest.TestCase): code, out = run("Ada", "--count", "0") self.assertEqual(code, 2) self.assertEqual(out, "") + + def test_json(self): + code, out = run("Ada", "--format", "json") + self.assertEqual(code, 0) + self.assertEqual(json.loads(out), {"greeting": "Hello, Ada!", "name": "Ada"})