Skip to content

Commit b3e038a

Browse files
authored
Add version flag to CLI (#1)
* Add -v/--version flag to CLI Add a version flag that displays the package version from importlib.metadata. Both -v and --version are supported. Includes tests for both flags. * Add uv.lock * Remove uv.lock and add to .gitignore * Use importlib.metadata in version tests instead of hardcoded version * Refactor to use click.version_option decorator * Simplify version_option using package_name for auto-detection https://gistpreview.github.io/?7bdf1535f7bf897fb475be6ff5da2e1c/index.html
1 parent 53cf31c commit b3e038a

File tree

3 files changed

+32
-0
lines changed

3 files changed

+32
-0
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
.DS_Store
22
__pycache__
3+
uv.lock

src/claude_code_publish/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -921,6 +921,7 @@ def generate_html(json_path, output_dir, github_repo=None):
921921

922922

923923
@click.group(cls=DefaultGroup, default="session", default_if_no_args=False)
924+
@click.version_option(None, "-v", "--version", package_name="claude-code-publish")
924925
def cli():
925926
"""Convert Claude Code session JSON to mobile-friendly HTML pages."""
926927
pass

tests/test_generate_html.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -871,6 +871,36 @@ def mock_run(*args, **kwargs):
871871
assert "gistpreview.github.io" in result.output
872872

873873

874+
class TestVersionOption:
875+
"""Tests for the --version option."""
876+
877+
def test_version_long_flag(self):
878+
"""Test that --version shows version info."""
879+
import importlib.metadata
880+
from click.testing import CliRunner
881+
from claude_code_publish import cli
882+
883+
runner = CliRunner()
884+
result = runner.invoke(cli, ["--version"])
885+
886+
expected_version = importlib.metadata.version("claude-code-publish")
887+
assert result.exit_code == 0
888+
assert expected_version in result.output
889+
890+
def test_version_short_flag(self):
891+
"""Test that -v shows version info."""
892+
import importlib.metadata
893+
from click.testing import CliRunner
894+
from claude_code_publish import cli
895+
896+
runner = CliRunner()
897+
result = runner.invoke(cli, ["-v"])
898+
899+
expected_version = importlib.metadata.version("claude-code-publish")
900+
assert result.exit_code == 0
901+
assert expected_version in result.output
902+
903+
874904
class TestOpenOption:
875905
"""Tests for the --open option."""
876906

0 commit comments

Comments
 (0)