Add update system
All checks were successful
Build and Upload Release (Windows EXE) / Build Windows EXE (release) Successful in 37s
All checks were successful
Build and Upload Release (Windows EXE) / Build Windows EXE (release) Successful in 37s
This commit is contained in:
104
version_manager.py
Normal file
104
version_manager.py
Normal file
@@ -0,0 +1,104 @@
|
||||
#!/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()
|
||||
Reference in New Issue
Block a user