"""Apply reviewed patches to pinned upstream checkouts. No Apple credentials involved.""" import json from pathlib import Path import subprocess import sys root = Path(sys.argv[1]).resolve() patches = Path(__file__).resolve().parent versions = { "iloader": "348eefd7de78e9bc612c9d619b8b1e7a80ba3ba0", "isideload": "f6a4d5dba717d72fc2af63eaba26b27ba44116be", "apple-crates": "5da0b8df9b202434b1eff2700059b1ee142592ac", } for name, commit in versions.items(): path = root / name actual = subprocess.check_output(["git", "-C", str(path), "rev-parse", "HEAD"], text=True).strip() if actual != commit: raise RuntimeError(f"Unexpected {name} revision: {actual}") for name, patch in [("isideload", "isideload.patch"), ("apple-crates", "apple-codesign.patch")]: subprocess.run(["git", "-C", str(root/name), "apply", "--check", str(patches/patch)], check=True) subprocess.run(["git", "-C", str(root/name), "apply", str(patches/patch)], check=True) manifest = root / "iloader/src-tauri/Cargo.toml" with manifest.open("a", encoding="utf-8") as file: file.write('\n[patch."https://github.com/nab138/isideload"]\nisideload = { path = "../../isideload/isideload" }\n') file.write('\n[patch."https://github.com/nab138/apple-crates"]\napple-codesign = { path = "../../apple-crates/apple-codesign-quick" }\n') # Portable helper: preserve upstream identifier/storage so existing Apple login can # be reused locally. Use a distinct title and disable upstream update replacement. config = root / "iloader/src-tauri/ci.conf.json" value = json.loads(config.read_text(encoding="utf-8")) value["app"] = {"windows": [{"title": "iloader — MusicBridge compatibility build", "width": 800, "height": 600}]} config.write_text(json.dumps(value, indent=2), encoding="utf-8") print("Patched pinned iloader, extension discovery, nested signing and profile-checked Keychain sharing.")