Adds the new Rust-based UI (iced), backend service, shared Swift models, CI/CD workflows, build scripts, and project documentation.
85 lines
4.8 KiB
Python
85 lines
4.8 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Create Xcode project structure for MovieMapper-iOS
|
|
"""
|
|
|
|
import os
|
|
import xml.etree.ElementTree as ET
|
|
from xml.dom import minidom
|
|
|
|
PROJECT_NAME = "MovieMapper-iOS"
|
|
PACKAGE_NAME = "MovieMapper-iOS"
|
|
ORGANIZATION = "com.moviemapper"
|
|
IOS_VERSION = "17.0"
|
|
|
|
def create_project_structure():
|
|
"""Create the Xcode project directory structure"""
|
|
base = f"/Users/user/Projects/MovieMapper/{PROJECT_NAME}"
|
|
|
|
# Project directory
|
|
project_dir = os.path.join(base, f"{PROJECT_NAME}.xcodeproj")
|
|
os.makedirs(project_dir, exist_ok=True)
|
|
|
|
# Project.pbxproj
|
|
pbxproj_path = os.path.join(project_dir, "project.pbxproj")
|
|
|
|
# Create project file content
|
|
content = """<?xml version="1.0" encoding="UTF-8"?>
|
|
<Document type="com.apple.InterfaceBuilder4.CocoaTouch.XIB" version="4.0" toolsVersion="23085" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
|
|
<device id="iPad9thGeneration" orientation="portrait" layout="fullscreen" appearance="light"/>
|
|
<dependencies>
|
|
<deployment identifier="iOS"/>
|
|
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23084"/>
|
|
<capability name="Safe layout from top level containers" minToolsVersion="5.1"/>
|
|
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
|
</dependencies>
|
|
<objects>
|
|
<placeholder placeholderIdentifier="ib-files-owner" id="-1" userLabel="File's Owner"/>
|
|
<placeholder placeholderIdentifier="ib-responder" id="-2" customClass="UIResponder"/>
|
|
<view contentMode="scaleToFill" id="iN0-l3-epH">
|
|
<rect key="frame" x="0.0" y="0.0" width="1024" height="1366"/>
|
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
|
<subviews>
|
|
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="MovieMapper-iOS" textAlignment="center" lineBreakMode="middleTruncation" baselineAdjustment="alignBaselines" minimumScaleFactor="0.0" translatesAutoresizingMaskIntoConstraints="NO" id="814-3m-7vK">
|
|
<rect key="frame" x="0.0" y="673" width="1024" height="20.333333333333343"/>
|
|
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
|
<color key="textColor" systemColor="label"/>
|
|
<nil key="highlightedColor"/>
|
|
</label>
|
|
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="iPad" textAlignment="center" lineBreakMode="middleTruncation" baselineAdjustment="alignBaselines" minimumScaleFactor="0.0" translatesAutoresizingMaskIntoConstraints="NO" id="114-7u-6qY">
|
|
<rect key="frame" x="0.0" y="1346" width="1024" height="20.333333333333343"/>
|
|
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
|
<color key="textColor" systemColor="label"/>
|
|
<nil key="highlightedColor"/>
|
|
</label>
|
|
</subviews>
|
|
<viewLayoutGuide key="safeArea" id="vUN-kp-3ea"/>
|
|
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
|
|
<constraints>
|
|
<constraint firstItem="814-3m-7vK" firstAttribute="centerX" secondItem="vUN-kp-3ea" secondAttribute="centerX" id="4dD-9q-6pT"/>
|
|
<constraint firstItem="114-7u-6qY" firstAttribute="centerX" secondItem="vUN-kp-3ea" secondAttribute="centerX" id="8jX-7T-5qK"/>
|
|
<constraint firstItem="814-3m-7vK" firstAttribute="top" secondItem="vUN-kp-3ea" secondAttribute="top" constant="653" id="9pM-0r-6cT"/>
|
|
<constraint firstItem="114-7u-6qY" firstAttribute="top" secondItem="vUN-kp-3ea" secondAttribute="top" constant="1326" id="zXJ-5q-7qL"/>
|
|
</constraints>
|
|
<nil key="simulatedStatusBarMetrics"/>
|
|
<nil key="simulatedTopBarMetrics"/>
|
|
<nil key="simulatedBottomBarMetrics"/>
|
|
<nil key="simulatedSizeMetrics"/>
|
|
<point key="canvasLocation" x="139" y="154"/>
|
|
</view>
|
|
</objects>
|
|
</Document>
|
|
"""
|
|
|
|
with open(pbxproj_path, 'w') as f:
|
|
f.write(content)
|
|
|
|
print(f"Created Xcode project structure at: {project_dir}")
|
|
print("Note: This is a minimal project structure. For full functionality:")
|
|
print(" 1. Open in Xcode: open MovieMapper-iOS.xcodeproj")
|
|
print(" 2. Add all Swift files from Sources/")
|
|
print(" 3. Configure Signing & Capabilities")
|
|
print(" 4. Set deployment target to iOS 17.0+")
|
|
|
|
if __name__ == "__main__":
|
|
create_project_structure() |