Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions fixit/cli.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
"""Command line entry point: `fixit <command>`."""
import argparse
import sys
import uuid

from fixit import __version__, convert, jsonfmt, password, textutils, wordcount

Expand Down Expand Up @@ -28,6 +29,9 @@ def build_parser() -> argparse.ArgumentParser:
pw.add_argument("--length", type=int, default=12)
pw.add_argument("--symbols", action="store_true")

uid = sub.add_parser("uuid", help="generate UUIDs")
uid.add_argument("--count", type=int, default=1)

js = sub.add_parser("json", help="pretty-print JSON")
js.add_argument("raw")

Expand All @@ -49,6 +53,9 @@ def main(argv=None) -> int:
print(CONVERSIONS[args.kind](args.value))
elif args.command == "password":
print(password.generate(args.length, use_symbols=args.symbols))
elif args.command == "uuid":
for _ in range(args.count):
print(uuid.uuid4())
elif args.command == "json":
print(jsonfmt.format_json(args.raw))
elif args.command == "palindrome":
Expand Down
13 changes: 13 additions & 0 deletions tests/test_uuid.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
from uuid import UUID

import pytest

from fixit.cli import main


def test_uuid_command_prints_requested_number_of_uuid4_values(capsys):
main(["uuid", "--count", "3"])

values = capsys.readouterr().out.splitlines()
assert len(values) == 3, f"expected 3 UUIDs, got {len(values)}"
assert all(UUID(value).version == 4 for value in values)
Loading