Skip to content
Open
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
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ Release notes and verified distribution hashes are available in the
Generate a title or tags:

```bash
creator-toolkit --version
creator-toolkit title "video editing"
creator-toolkit tags --count 5
```
Expand Down
8 changes: 8 additions & 0 deletions src/creator_toolkit/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
import json
import sys
from collections.abc import Sequence
from importlib import metadata
from pathlib import Path
from random import Random
from typing import Any
Expand All @@ -20,6 +21,7 @@
from creator_toolkit.title_generator import generate_title

JSON_SCHEMA_VERSION = 1
PACKAGE_NAME = "creator-toolkit-cli"


class UsageError(ValueError):
Expand All @@ -31,6 +33,12 @@ def build_parser() -> argparse.ArgumentParser:
parser = argparse.ArgumentParser(
prog="creator-toolkit", description="Tools for creator workflows"
)
parser.add_argument(
"--version",
action="version",
version=f"{PACKAGE_NAME} {metadata.version(PACKAGE_NAME)}",
help="show the installed package version and exit",
)
subparsers = parser.add_subparsers(dest="command")

title_parser = subparsers.add_parser("title", help="generate a title from a keyword")
Expand Down
10 changes: 10 additions & 0 deletions tests/test_cli_smoke.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
import shutil
import subprocess
import sys
from importlib import metadata
from pathlib import Path


Expand Down Expand Up @@ -34,10 +35,19 @@ def test_installed_cli_help_lists_commands():

assert_success(result)
assert result.stderr == ""
assert "--version" in result.stdout
for command in ("title", "tags", "rename", "undo"):
assert command in result.stdout


def test_installed_cli_version_reports_package_name_and_version():
result = run_cli("--version")

assert_success(result)
assert result.stderr == ""
assert result.stdout == f"creator-toolkit-cli {metadata.version('creator-toolkit-cli')}\n"


def test_installed_cli_generates_title_and_tags_json():
title_result = run_cli("title", "creator workflow", "--seed", "2026", "--json")
assert_success(title_result)
Expand Down
13 changes: 13 additions & 0 deletions tests/test_main.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
import json
from importlib import metadata

import pytest

from creator_toolkit.main import interactive_menu, main

Expand All @@ -13,6 +16,16 @@ def test_tags_command(capsys):
assert len(capsys.readouterr().out.splitlines()) == 2


def test_version_command_uses_installed_package_metadata(capsys):
with pytest.raises(SystemExit) as exit_info:
main(["--version"])

assert exit_info.value.code == 0
assert capsys.readouterr().out == (
f"creator-toolkit-cli {metadata.version('creator-toolkit-cli')}\n"
)


def test_seeded_title_and_tags_commands_are_reproducible(capsys):
assert main(["title", "creator workflow", "--seed", "2026"]) == 0
first_title = capsys.readouterr().out
Expand Down