mirror of
https://github.com/DRYTRIX/TimeTracker.git
synced 2026-05-17 10:29:49 -05:00
00f1f18abb
- 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
85 lines
2.6 KiB
Python
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()
|