From 6f7b7a6efdb99a99cec06d105be03813133409a4 Mon Sep 17 00:00:00 2001 From: RobertoRoos Date: Fri, 31 Jan 2025 08:14:33 +0100 Subject: [PATCH] Added version flag to base tool --- pyproject.toml | 3 +++ src/tctools/common.py | 5 +++++ tests/test_common.py | 9 +++++++++ 3 files changed, 17 insertions(+) diff --git a/pyproject.toml b/pyproject.toml index 845cc39..47e1c7d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -54,6 +54,9 @@ tc_make_release = "tctools.make_release.__main__:main_argv" [tool.poetry-dynamic-versioning] enable = true +[tool.poetry-dynamic-versioning.substitution] +files = ["src/tctools/__init__.py"] + # ----------- Other tools ----------- [tool.black] diff --git a/src/tctools/common.py b/src/tctools/common.py index 20dff20..bee3492 100644 --- a/src/tctools/common.py +++ b/src/tctools/common.py @@ -7,6 +7,8 @@ from lxml import etree +from . import __version__ + try: import tomllib except ImportError: @@ -87,6 +89,9 @@ def get_argument_parser(cls) -> ArgumentParser: @classmethod def set_arguments(cls, parser): """Create application-specific arguments.""" + parser.add_argument( + "--version", "-V", action="version", version="%(prog)s " + __version__ + ) parser.add_argument( "--dry", help="Do not modify files on disk, only report changes to be made", diff --git a/tests/test_common.py b/tests/test_common.py index 244e751..953d0e1 100644 --- a/tests/test_common.py +++ b/tests/test_common.py @@ -48,6 +48,15 @@ def test_cli_arguments_default(self): tool = MyTool() assert tool.args.my_option == "default-text" + def test_cli_version(self, capsys): + with pytest.raises(SystemExit) as err: + _ = MyTool("--version") + + assert err.type == SystemExit + + message = capsys.readouterr().out + assert message + def test_config_file(self, tmp_path, monkeypatch): conf_dir = tmp_path / "project" work_dir = conf_dir / "subdir1" / "subdir2"