diff --git a/.changeset/0001-version-flag.md b/.changeset/0001-version-flag.md new file mode 100644 index 0000000..5f008bc --- /dev/null +++ b/.changeset/0001-version-flag.md @@ -0,0 +1,5 @@ +--- +"pan-scm-cli": patch +--- + +Add `--version` (and `-V`) flag to the top-level `scm` command so users can quickly check the installed CLI version. diff --git a/src/scm_cli/main.py b/src/scm_cli/main.py index b1c3f8f..8dcd466 100644 --- a/src/scm_cli/main.py +++ b/src/scm_cli/main.py @@ -300,6 +300,14 @@ def get_region_override() -> str | None: return _region_override +def _version_callback(value: bool) -> None: + if value: + from scm_cli import __version__ + + typer.echo(__version__) + raise typer.Exit() + + @app.callback() def callback( region: str | None = typer.Option( @@ -307,6 +315,14 @@ def callback( "--region", help="Override SCM API region for this invocation", ), + version: bool | None = typer.Option( + None, + "--version", + "-V", + help="Show the CLI version and exit", + callback=_version_callback, + is_eager=True, + ), ): """Manage Palo Alto Networks Strata Cloud Manager (SCM) configurations. diff --git a/tests/test_main.py b/tests/test_main.py index 965ffd7..ee6c799 100644 --- a/tests/test_main.py +++ b/tests/test_main.py @@ -49,3 +49,21 @@ def test_load_command_help(runner): assert "network" in result.stdout assert "object" in result.stdout assert "security" in result.stdout + + +def test_version_flag(runner): + """`scm --version` prints the installed version and exits 0.""" + from scm_cli import __version__ + + result = runner.invoke(app, ["--version"]) + assert result.exit_code == 0 + assert __version__ in result.stdout + + +def test_version_short_flag(runner): + """`scm -V` is an alias for --version.""" + from scm_cli import __version__ + + result = runner.invoke(app, ["-V"]) + assert result.exit_code == 0 + assert __version__ in result.stdout