~reviewer/hello-hut

929dcec484a45211b2ba56d871da38803b51c085 — Priya Raman 3 months ago 948f89c
Add --format=json for scripting
2 files changed, 12 insertions(+), 1 deletions(-)

M src/hello_hut/cli.py
M tests/test_cli.py
M src/hello_hut/cli.py => src/hello_hut/cli.py +6 -1
@@ 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)

M tests/test_cli.py => tests/test_cli.py +6 -0
@@ 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"})