diff --git a/main.py b/main.py index c5a626e..689c166 100644 --- a/main.py +++ b/main.py @@ -9,6 +9,7 @@ from agent.session import Session from config.config import ApprovalPolicy, Config from config.loader import load_config +from oss_dev._version import __version__ from ui.tui import TUI, get_console from oss.workflow import OSSWorkflow @@ -454,6 +455,7 @@ async def _handle_oss_status(self) -> None: @click.group() +@click.version_option(__version__, "--version", "-V", prog_name="oss-dev", message="%(prog)s v%(version)s") @click.option( "--cwd", "-c", diff --git a/tests/cli/test_new_cli.py b/tests/cli/test_new_cli.py index 0023466..22a428b 100644 --- a/tests/cli/test_new_cli.py +++ b/tests/cli/test_new_cli.py @@ -6,6 +6,16 @@ runner = CliRunner() +def test_typer_app_version_option(): + result = runner.invoke( + app, + ["--version"], + ) + + assert result.exit_code == 0 + assert result.output == "oss-dev v0.2.0\n" + + def test_mentor_accepts_github_issue_url_with_positive_issue_number(): result = runner.invoke( app, diff --git a/tests/cli/test_oss_commands.py b/tests/cli/test_oss_commands.py index 1360166..e4e1f4d 100644 --- a/tests/cli/test_oss_commands.py +++ b/tests/cli/test_oss_commands.py @@ -6,6 +6,7 @@ from click.testing import CliRunner from cli.oss_commands import oss_dev_group +from main import main @pytest.fixture @@ -92,3 +93,11 @@ def test_oss_dev_switch_requires_target(cli_runner): result = cli_runner.invoke(oss_dev_group, ["switch"]) assert result.exit_code != 0 assert "Missing argument" in result.output or "required" in result.output.lower() + + +def test_main_version_option(cli_runner): + """Test top-level Click CLI version output.""" + result = cli_runner.invoke(main, ["--version"]) + + assert result.exit_code == 0 + assert result.output == "oss-dev v0.2.0\n"