@daemux/store-automator 0.10.81 → 0.10.82
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -5,14 +5,14 @@
|
|
|
5
5
|
},
|
|
6
6
|
"metadata": {
|
|
7
7
|
"description": "App Store & Google Play automation for Flutter apps",
|
|
8
|
-
"version": "0.10.
|
|
8
|
+
"version": "0.10.82"
|
|
9
9
|
},
|
|
10
10
|
"plugins": [
|
|
11
11
|
{
|
|
12
12
|
"name": "store-automator",
|
|
13
13
|
"source": "./plugins/store-automator",
|
|
14
14
|
"description": "3 agents for app store publishing: reviewer, meta-creator, media-designer",
|
|
15
|
-
"version": "0.10.
|
|
15
|
+
"version": "0.10.82",
|
|
16
16
|
"keywords": [
|
|
17
17
|
"flutter",
|
|
18
18
|
"app-store",
|
package/package.json
CHANGED
|
@@ -37,7 +37,14 @@ from asc_common import get_json, request
|
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
PROFILE_PREFIX = "CI-"
|
|
40
|
-
|
|
40
|
+
|
|
41
|
+
# Xcode 16+ moved the canonical profile directory. Older Xcode releases used
|
|
42
|
+
# ~/Library/MobileDevice/Provisioning Profiles/. We write to BOTH so the same
|
|
43
|
+
# script works on macos-14 (Xcode 15) and macos-15 (Xcode 26).
|
|
44
|
+
_PROFILE_DIRS = [
|
|
45
|
+
Path.home() / "Library/Developer/Xcode/UserData/Provisioning Profiles",
|
|
46
|
+
Path.home() / "Library/MobileDevice/Provisioning Profiles",
|
|
47
|
+
]
|
|
41
48
|
|
|
42
49
|
# Product types that must be signed with a provisioning profile. App
|
|
43
50
|
# extensions share the common ``com.apple.product-type.app-extension`` prefix
|
|
@@ -342,15 +349,26 @@ def create_profile(
|
|
|
342
349
|
|
|
343
350
|
|
|
344
351
|
def install_profile(profile_der: bytes) -> str:
|
|
345
|
-
|
|
346
|
-
|
|
352
|
+
primary = _PROFILE_DIRS[0]
|
|
353
|
+
primary.mkdir(parents=True, exist_ok=True)
|
|
354
|
+
tmp_path = primary / "tmp.mobileprovision"
|
|
347
355
|
tmp_path.write_bytes(profile_der)
|
|
348
356
|
decoded = subprocess.check_output(
|
|
349
357
|
["security", "cms", "-D", "-i", str(tmp_path)]
|
|
350
358
|
)
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
359
|
+
plist = plistlib.loads(decoded)
|
|
360
|
+
uuid = plist["UUID"]
|
|
361
|
+
team_ids = plist.get("TeamIdentifier") or []
|
|
362
|
+
profile_name = plist.get("Name") or "<unknown>"
|
|
363
|
+
final_name = f"{uuid}.mobileprovision"
|
|
364
|
+
for directory in _PROFILE_DIRS:
|
|
365
|
+
directory.mkdir(parents=True, exist_ok=True)
|
|
366
|
+
(directory / final_name).write_bytes(profile_der)
|
|
367
|
+
tmp_path.unlink(missing_ok=True)
|
|
368
|
+
print(
|
|
369
|
+
f" profile {profile_name!r}: uuid={uuid} team={team_ids} "
|
|
370
|
+
f"dirs={[str(d) for d in _PROFILE_DIRS]}"
|
|
371
|
+
)
|
|
354
372
|
return uuid
|
|
355
373
|
|
|
356
374
|
|