Files
ProgressionMods/version_manager.py
HRiggs 44fe6245b9
All checks were successful
Build and Upload Release (Windows EXE) / Build Windows EXE (release) Successful in 37s
Add update system
2026-01-24 01:13:19 -05:00

104 lines
3.0 KiB
Python

#!/usr/bin/env python3
"""
Version Manager for Progression Loader
"""
import re
import sys
def get_current_version():
"""Get the current version from update_config.py"""
try:
with open('update_config.py', 'r') as f:
content = f.read()
match = re.search(r'"current_version":\s*"([^"]+)"', content)
if match:
return match.group(1)
except FileNotFoundError:
pass
return None
def set_version(new_version):
"""Set the version in update_config.py"""
try:
with open('update_config.py', 'r') as f:
content = f.read()
updated_content = re.sub(
r'"current_version":\s*"[^"]+"',
f'"current_version": "{new_version}"',
content
)
with open('update_config.py', 'w') as f:
f.write(updated_content)
print(f"✅ Updated version to {new_version}")
return True
except Exception as e:
print(f"❌ Error updating version: {e}")
return False
def validate_version(version_string):
"""Validate semantic versioning format"""
pattern = r'^(\d+)\.(\d+)\.(\d+)(?:-([a-zA-Z0-9\-\.]+))?$'
return re.match(pattern, version_string) is not None
def suggest_next_version(current_version):
"""Suggest next version numbers"""
if not current_version:
return ["1.0.0"]
try:
parts = current_version.split('.')
if len(parts) >= 3:
major, minor, patch = int(parts[0]), int(parts[1]), int(parts[2])
return [
f"{major}.{minor}.{patch + 1}", # Patch
f"{major}.{minor + 1}.0", # Minor
f"{major + 1}.0.0" # Major
]
except ValueError:
pass
return ["1.0.0"]
def main():
"""Main interface"""
if len(sys.argv) < 2:
current = get_current_version()
print(f"Current Version: {current or 'Not found'}")
if current:
suggestions = suggest_next_version(current)
print("Suggested versions:", ", ".join(suggestions))
print("\nUsage:")
print(" python version_manager.py <version> # Set version")
print(" python version_manager.py current # Show current")
print("\nExample: python version_manager.py 1.0.1")
return
command = sys.argv[1]
if command == "current":
current = get_current_version()
print(f"Current version: {current or 'Not found'}")
return
# Set version
new_version = command
if not validate_version(new_version):
print(f"❌ Invalid version format: {new_version}")
print("Use format: MAJOR.MINOR.PATCH (e.g., 1.0.1)")
return
if set_version(new_version):
print("Next steps:")
print(f" git add update_config.py")
print(f" git commit -m 'Bump version to {new_version}'")
print(f" git tag v{new_version} && git push --tags")
if __name__ == "__main__":
main()