2025-11-20 00:10:19 +01:00
|
|
|
#!/usr/bin/env python3
|
2025-12-30 22:08:21 +01:00
|
|
|
"""Update VERSION_BASE in version.py after a release tag.
|
2025-11-20 00:10:19 +01:00
|
|
|
|
|
|
|
|
Behavior:
|
|
|
|
|
- Read VERSION_BASE from version.py
|
2025-12-30 22:08:21 +01:00
|
|
|
- Strip ANY existing ".dev" suffix
|
|
|
|
|
- Append exactly one ".dev"
|
2025-11-20 00:10:19 +01:00
|
|
|
- Write back the updated file
|
|
|
|
|
|
|
|
|
|
This ensures:
|
2025-12-30 22:08:21 +01:00
|
|
|
0.2.0 --> 0.2.0.dev
|
|
|
|
|
0.2.0.dev --> 0.2.0.dev
|
|
|
|
|
0.2.0.dev.dev -> 0.2.0.dev
|
2025-11-20 00:10:19 +01:00
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
import re
|
|
|
|
|
import sys
|
|
|
|
|
from pathlib import Path
|
|
|
|
|
|
|
|
|
|
ROOT = Path(__file__).resolve().parent.parent
|
|
|
|
|
VERSION_FILE = ROOT / "src" / "akkudoktoreos" / "core" / "version.py"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def bump_dev_version_file(file: Path) -> str:
|
|
|
|
|
text = file.read_text(encoding="utf-8")
|
|
|
|
|
|
|
|
|
|
# Extract current version
|
|
|
|
|
m = re.search(r'^VERSION_BASE\s*=\s*["\']([^"\']+)["\']',
|
|
|
|
|
text, flags=re.MULTILINE)
|
|
|
|
|
if not m:
|
|
|
|
|
raise ValueError("VERSION_BASE not found")
|
|
|
|
|
|
|
|
|
|
base_version = m.group(1)
|
|
|
|
|
|
2025-12-30 22:08:21 +01:00
|
|
|
# Remove trailing .dev if present → ensure idempotency
|
|
|
|
|
cleaned = re.sub(r'(\.dev)+$', '', base_version)
|
2025-11-20 00:10:19 +01:00
|
|
|
|
|
|
|
|
# Append +dev
|
2025-12-30 22:08:21 +01:00
|
|
|
new_version = f"{cleaned}.dev"
|
2025-11-20 00:10:19 +01:00
|
|
|
|
|
|
|
|
# Replace inside file content
|
|
|
|
|
new_text = re.sub(
|
|
|
|
|
r'^VERSION_BASE\s*=\s*["\']([^"\']+)["\']',
|
|
|
|
|
f'VERSION_BASE = "{new_version}"',
|
|
|
|
|
text,
|
|
|
|
|
flags=re.MULTILINE
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
file.write_text(new_text, encoding="utf-8")
|
|
|
|
|
|
|
|
|
|
return new_version
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def main():
|
|
|
|
|
# Use CLI argument or fallback default path
|
|
|
|
|
version_file = Path(sys.argv[1]) if len(sys.argv) > 1 else VERSION_FILE
|
|
|
|
|
|
|
|
|
|
try:
|
|
|
|
|
new_version = bump_dev_version_file(version_file)
|
|
|
|
|
except Exception as e:
|
|
|
|
|
print(f"Error: {e}", file=sys.stderr)
|
|
|
|
|
sys.exit(1)
|
|
|
|
|
|
|
|
|
|
# MUST print to stdout
|
|
|
|
|
print(new_version)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
|
main()
|