diff --git a/src/mtg_archetypes/__init__.py b/src/mtg_archetypes/__init__.py index 1b2ff68..473407b 100644 --- a/src/mtg_archetypes/__init__.py +++ b/src/mtg_archetypes/__init__.py @@ -19,6 +19,7 @@ "CardRequirement", "ClassificationResult", "SignatureGroup", + "__version__", "expand_card_counts", "normalize_card_name", "parse_decklist_text", diff --git a/src/mtg_archetypes/cli.py b/src/mtg_archetypes/cli.py index 988882e..3f009ae 100644 --- a/src/mtg_archetypes/cli.py +++ b/src/mtg_archetypes/cli.py @@ -5,6 +5,7 @@ import sys from pathlib import Path +from . import __version__ from .cards import parse_decklist_text from .engine import ArchetypeClassifier @@ -15,6 +16,11 @@ def main(args: list[str] | None = None) -> int: prog="mtg-archetypes", description="A fast MTG deck archetype classifier for common formats.", ) + parser.add_argument( + "--version", + action="version", + version=f"%(prog)s {__version__}", + ) parser.add_argument( "format", help=( diff --git a/tests/test_cli.py b/tests/test_cli.py index 50a1578..d16aacc 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -4,6 +4,9 @@ import json from unittest.mock import patch +import pytest + +from mtg_archetypes import __version__ from mtg_archetypes.cli import main @@ -91,3 +94,12 @@ def test_cli_default_rules_dir(tmp_path, capsys): deck.write_text("60 Plains\n", encoding="utf-8") code = main(["legacy", str(deck)]) assert code == 0 + + +def test_cli_version(capsys): + """Test that --version prints version and exits with status 0.""" + with pytest.raises(SystemExit) as excinfo: + main(["--version"]) + assert excinfo.value.code == 0 + captured = capsys.readouterr() + assert captured.out.strip() == f"mtg-archetypes {__version__}"