Preserve local Swift package fallback in release automation
Seto Elkahfi committed
May 15, 2026 at 05:57 UTC
f22a3dbc42a306c568e644c56031f428d74f3821
1 file changed
+14
-14
.github/workflows/release-sdk-swift.yml
+14
-14
@@ -101,7 +101,7 @@ jobs:
101
token: ${{ secrets.ONDE_SWIFT_PAT }}
102
path: onde-swift
103
104
- - name: Rewrite Package.swift with release URL and checksum
104
+ - name: Rewrite Package.swift release constants
105
if: startsWith(github.ref, 'refs/tags/')
106
env:
107
CHECKSUM: ${{ steps.meta.outputs.checksum }}
@@ -116,22 +116,22 @@ jobs:
116
url = os.environ["RELEASE_URL"]
117
checksum = os.environ["CHECKSUM"].strip()
118
119
- pattern = re.compile(
120
- r'\.binaryTarget\(\s*name:\s*"OndeFramework".*?\)',
121
- re.DOTALL,
119
+ url_pattern = re.compile(
120
+ r'(let releaseFrameworkURL =\s*\n\s*")([^"]+)(")',
121
+ re.MULTILINE,
122
)
123
-
124
- replacement = (
125
- '.binaryTarget(\n'
126
- ' name: "OndeFramework",\n'
127
- f' url: "{url}",\n'
128
- f' checksum: "{checksum}"\n'
129
- ' )'
123
+ checksum_pattern = re.compile(
124
+ r'(let releaseFrameworkChecksum =\s*\n\s*")([^"]+)(")',
125
+ re.MULTILINE,
126
)
127
132
- updated = pattern.sub(replacement, src)
133
- if updated == src:
134
- raise RuntimeError("binaryTarget pattern did not match — check Package.swift format")
128
+ updated, url_count = url_pattern.subn(rf'\1{url}\3', src, count=1)
129
+ updated, checksum_count = checksum_pattern.subn(rf'\1{checksum}\3', updated, count=1)
130
+
131
+ if url_count != 1:
132
+ raise RuntimeError("releaseFrameworkURL pattern did not match — check Package.swift format")
133
+ if checksum_count != 1:
134
+ raise RuntimeError("releaseFrameworkChecksum pattern did not match — check Package.swift format")
135
136
pkg.write_text(updated)
137
print("Package.swift updated:")