From 6f46fec09e6494056c9d45ef832f468fc538abee Mon Sep 17 00:00:00 2001 From: Calvin Remsburg Date: Tue, 21 Apr 2026 08:19:19 -0500 Subject: [PATCH] feat(cli): add --version / -V flag; bump to 1.4.1 --- .changeset/0001-version-flag.md | 5 +++++ pyproject.toml | 2 +- src/scm_cli/main.py | 16 ++++++++++++++++ tests/test_main.py | 18 ++++++++++++++++++ 4 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 .changeset/0001-version-flag.md 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/pyproject.toml b/pyproject.toml index accd5f9..a18a070 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "pan-scm-cli" -version = "1.4.0" +version = "1.4.1" description = "CICD and Network Engineer-friendly CLI tool for Palo Alto Networks Strata Cloud Manager" authors = ["Calvin Remsburg "] readme = "README.md" 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