Files
TimeTracker/scripts/sync-desktop-version.py
T
Dries Peeters 00f1f18abb Improve build scripts and CI/CD workflows
- Enhance build scripts with better error handling and Windows support
- Add Windows-specific build scripts and PowerShell utilities
- Add asset preparation and verification scripts
- Update GitHub Actions workflows for desktop and mobile builds
- Add build configuration and troubleshooting utilities
- Improve cross-platform build compatibility
2026-01-11 20:51:13 +01:00

85 lines
2.6 KiB
Python

#!/usr/bin/env python3
"""
Sync version from setup.py to desktop/package.json
This ensures the Electron app uses the same version as the main application.
"""
import os
import sys
import json
import re
def get_version_from_setup():
"""Read version from setup.py"""
script_dir = os.path.dirname(os.path.abspath(__file__))
project_root = os.path.dirname(script_dir)
setup_path = os.path.join(project_root, 'setup.py')
if not os.path.exists(setup_path):
print(f"ERROR: setup.py not found at {setup_path}")
sys.exit(1)
try:
with open(setup_path, 'r', encoding='utf-8') as f:
content = f.read()
# Extract version using regex
# Matches: version='X.Y.Z' or version="X.Y.Z"
version_match = re.search(r'version\s*=\s*[\'"]([^\'"]+)[\'"]', content)
if version_match:
return version_match.group(1)
else:
print("ERROR: Could not find version in setup.py")
sys.exit(1)
except Exception as e:
print(f"ERROR: Failed to read setup.py: {e}")
sys.exit(1)
def update_package_json(version):
"""Update version in desktop/package.json"""
script_dir = os.path.dirname(os.path.abspath(__file__))
project_root = os.path.dirname(script_dir)
package_json_path = os.path.join(project_root, 'desktop', 'package.json')
if not os.path.exists(package_json_path):
print(f"ERROR: package.json not found at {package_json_path}")
sys.exit(1)
try:
# Read current package.json
with open(package_json_path, 'r', encoding='utf-8') as f:
package_data = json.load(f)
old_version = package_data.get('version', 'unknown')
# Update version
package_data['version'] = version
# Write back to file with proper formatting
with open(package_json_path, 'w', encoding='utf-8') as f:
json.dump(package_data, f, indent=2, ensure_ascii=False)
f.write('\n') # Add trailing newline
print(f"Updated desktop/package.json version: {old_version} -> {version}")
return True
except Exception as e:
print(f"ERROR: Failed to update package.json: {e}")
sys.exit(1)
def main():
"""Main function"""
print("Syncing version from setup.py to desktop/package.json...")
# Get version from setup.py
version = get_version_from_setup()
print(f"Found version in setup.py: {version}")
# Update package.json
update_package_json(version)
print("Version sync complete!")
if __name__ == '__main__':
main()