summaryrefslogtreecommitdiffhomepage
path: root/script
diff options
context:
space:
mode:
authorDax Raad <[email protected]>2026-04-18 12:31:59 -0400
committerDax Raad <[email protected]>2026-04-18 12:32:23 -0400
commit5eaef6b758cbfb683deadb8d440a420c3c1ee1f8 (patch)
tree44ed60450e987d9cbee29954911f1d0b47860d72 /script
parentc5c38cad9c444070fa3b18d569fa75eb2ab40407 (diff)
downloadopencode-5eaef6b758cbfb683deadb8d440a420c3c1ee1f8.tar.gz
opencode-5eaef6b758cbfb683deadb8d440a420c3c1ee1f8.zip
release: avoid package.json drift during publish
Diffstat (limited to 'script')
-rwxr-xr-xscript/publish.ts17
1 files changed, 17 insertions, 0 deletions
diff --git a/script/publish.ts b/script/publish.ts
index 6cd244e0e..c8e39a4b3 100755
--- a/script/publish.ts
+++ b/script/publish.ts
@@ -15,11 +15,23 @@ const pkgjsons = await Array.fromAsync(
).then((arr) => arr.filter((x) => !x.includes("node_modules") && !x.includes("dist")))
const extensionToml = fileURLToPath(new URL("../packages/extensions/zed/extension.toml", import.meta.url))
+const publishPackageJsons = ["packages/plugin/package.json", "packages/sdk/js/package.json"]
async function hasChanges() {
return (await $`git diff --quiet && git diff --cached --quiet`.nothrow()).exitCode !== 0
}
+async function hasPublishPackageJsonChanges() {
+ if ((await $`git diff --quiet -- ${publishPackageJsons}`.nothrow()).exitCode !== 0) return true
+ return (await $`git diff --cached --quiet -- ${publishPackageJsons}`.nothrow()).exitCode !== 0
+}
+
+async function logPublishPackageJsonChanges() {
+ await $`git status --short -- ${publishPackageJsons}`
+ await $`git diff -- ${publishPackageJsons}`
+ await $`git diff --cached -- ${publishPackageJsons}`
+}
+
async function releaseTagExists() {
return (await $`git rev-parse -q --verify refs/tags/${tag}`.nothrow()).exitCode === 0
}
@@ -76,6 +88,11 @@ if (Script.release) {
if (Script.release && !Script.preview) {
await $`git fetch origin`
+ if (await hasPublishPackageJsonChanges()) {
+ console.error("publish scripts left package.json changes before syncing dev")
+ await logPublishPackageJsonChanges()
+ throw new Error("packages/plugin/package.json or packages/sdk/js/package.json changed during publish")
+ }
await $`git checkout -B dev origin/dev`
await prepareReleaseFiles()
if (await hasChanges()) {