Skip to content

Commit c3410c3

Browse files
author
LittleCoinCoin
committed
feat: add --version flag to CLI argument parser
Implement hatch --version command to display application version: - Add importlib.metadata imports (version, PackageNotFoundError) - Add get_hatch_version() helper function with error handling - Add --version argument to main parser using argparse action='version' The version is retrieved dynamically from package metadata via importlib.metadata.version('hatch'). Falls back to 'unknown (development mode)' if package is not installed. Output format: 'hatch <version>' (e.g., 'hatch 0.6.1') No short form (-v) to avoid conflict with existing package version flag in subcommands. Related to: Phase 1 analysis (version_command_analysis_v1.md)
1 parent 4d06b40 commit c3410c3

File tree

1 file changed

+23
-0
lines changed

1 file changed

+23
-0
lines changed

hatch/cli_hatch.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,28 @@
1313
import sys
1414
from pathlib import Path
1515
from typing import Optional, List
16+
from importlib.metadata import version, PackageNotFoundError
1617

1718
from hatch.environment_manager import HatchEnvironmentManager
1819
from hatch_validator import HatchPackageValidator
1920
from hatch_validator.package.package_service import PackageService
2021
from hatch.template_generator import create_package_template
2122
from hatch.mcp_host_config import MCPHostConfigurationManager, MCPHostType, MCPHostRegistry, MCPServerConfig
2223

24+
25+
def get_hatch_version() -> str:
26+
"""Get Hatch version from package metadata.
27+
28+
Returns:
29+
str: Version string from package metadata, or 'unknown (development mode)'
30+
if package is not installed.
31+
"""
32+
try:
33+
return version('hatch')
34+
except PackageNotFoundError:
35+
return 'unknown (development mode)'
36+
37+
2338
def parse_host_list(host_arg: str):
2439
"""Parse comma-separated host list or 'all'."""
2540
if not host_arg:
@@ -944,6 +959,14 @@ def main():
944959

945960
# Create argument parser
946961
parser = argparse.ArgumentParser(description="Hatch package manager CLI")
962+
963+
# Add version argument
964+
parser.add_argument(
965+
'--version',
966+
action='version',
967+
version=f'%(prog)s {get_hatch_version()}'
968+
)
969+
947970
subparsers = parser.add_subparsers(dest="command", help="Command to execute")
948971

949972
# Create template command

0 commit comments

Comments
 (0)