diff options
| author | Dax Raad <[email protected]> | 2026-04-18 12:31:59 -0400 |
|---|---|---|
| committer | Dax Raad <[email protected]> | 2026-04-18 12:32:23 -0400 |
| commit | 5eaef6b758cbfb683deadb8d440a420c3c1ee1f8 (patch) | |
| tree | 44ed60450e987d9cbee29954911f1d0b47860d72 /script | |
| parent | c5c38cad9c444070fa3b18d569fa75eb2ab40407 (diff) | |
| download | opencode-5eaef6b758cbfb683deadb8d440a420c3c1ee1f8.tar.gz opencode-5eaef6b758cbfb683deadb8d440a420c3c1ee1f8.zip | |
release: avoid package.json drift during publish
Diffstat (limited to 'script')
| -rwxr-xr-x | script/publish.ts | 17 |
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()) { |
