#!/usr/bin/env python3 """Version bumping script for aiogram (replaces hatch version).""" import re import sys from pathlib import Path def bump_version(part: str) -> str: """Bump version in __meta__.py.""" meta_path = Path("aiogram/__meta__.py") content = meta_path.read_text() # Extract current version version_match = re.search(r'__version__ = "(\d+)\.(\d+)\.(\d+)"', content) if not version_match: raise ValueError("Could not find version in __meta__.py") major, minor, patch = map(int, version_match.groups()) # Bump appropriate part if part == "major": major += 1 minor = 0 patch = 0 elif part == "minor": minor += 1 patch = 0 elif part == "patch": patch += 1 elif part.startswith("to:"): new_version = part.replace("to:", "") content = re.sub( r'__version__ = "\d+\.\d+\.\d+"', f'__version__ = "{new_version}"', content ) meta_path.write_text(content) return new_version else: raise ValueError(f"Unknown part: {part}. Use major, minor, patch, or to:X.Y.Z") new_version = f"{major}.{minor}.{patch}" content = re.sub(r'__version__ = "\d+\.\d+\.\d+"', f'__version__ = "{new_version}"', content) meta_path.write_text(content) return new_version if __name__ == "__main__": if len(sys.argv) != 2: print("Usage: python scripts/bump_version.py [major|minor|patch|to:X.Y.Z]") sys.exit(1) new_version = bump_version(sys.argv[1]) print(f"Bumped version to {new_version}")