52 lines
1.7 KiB
Python
52 lines
1.7 KiB
Python
#!/usr/bin/env python3
|
|
"""Migrate MonsterCards.xcodeproj for Xcode 27 / Swift 6 / modern iOS SDK."""
|
|
import re
|
|
|
|
path = "iOS/MonsterCards.xcodeproj/project.pbxproj"
|
|
|
|
with open(path, 'r') as f:
|
|
content = f.read()
|
|
|
|
# --- Changes to apply ---
|
|
|
|
# 1. objectVersion from 52 → 58 (Xcode 14+)
|
|
content = re.sub(r'objectVersion = 52;', 'objectVersion = 58;', content)
|
|
|
|
# 2. LastUpgradeCheck from 1200 → 2700 (Xcode 27)
|
|
content = re.sub(r'LastUpgradeCheck = 1240;', 'LastUpgradeCheck = 2700;', content)
|
|
|
|
# 3. LastSwiftUpdateCheck from 1240 → 2700
|
|
content = re.sub(r'LastSwiftUpdateCheck = 1240;', 'LastSwiftUpdateCheck = 2700;', content)
|
|
|
|
# 4. IPHONEOS_DEPLOYMENT_TARGET: 14.4 → 15.0 (Preview appex)
|
|
# 5. IPHONEOS_DEPLOYMENT_TARGET: 14.0 → 15.0 (all others - minimum supported by current dependencies & Xcode SDK)
|
|
for old_val in ['14.4', '14.0']:
|
|
content = re.sub(
|
|
r'IPHONEOS_DEPLOYMENT_TARGET = ' + re.escape(old_val) + ';',
|
|
'IPHONEOS_DEPLOYMENT_TARGET = 15.0;',
|
|
content
|
|
)
|
|
|
|
# 6. SWIFT_VERSION: 5.0 → 6.0 across all targets
|
|
content = re.sub(
|
|
r'SWIFT_VERSION = 5\.0;',
|
|
'SWIFT_LANGUAGE_VERSION = 6;',
|
|
content
|
|
)
|
|
|
|
# Verify counts
|
|
v15 = len(re.findall(r'IPHONEOS_DEPLOYMENT_TARGET = 15\.0;', content))
|
|
v6 = content.count('SWIFT_LANGUAGE_VERSION = 6')
|
|
v52_old = content.count('objectVersion = 52')
|
|
v14_old = content.count('IPHONEOS_DEPLOYMENT_TARGET = 14.')
|
|
|
|
print(f"IPHONEOS_DEPLOYMENT_TARGET → 15.0 applied: {v15} times (expected 8)")
|
|
print(f"SWIFT_VERSION → SWIFT_LANGUAGE_VERSION = 6 applied: {v6} times (expected 8)")
|
|
print(f"Remaining objectVersion=52: {v52_old}")
|
|
print(f"Remaining IPHONEOS_DEPLOYMENT_TARGET = 14.x: {v14_old}")
|
|
|
|
with open(path, 'w') as f:
|
|
f.write(content)
|
|
|
|
print("\nDone. All changes written.")
|