Skip to content

Commit 940f971

Browse files
committed
ci: fix
1 parent 78ca49a commit 940f971

1 file changed

Lines changed: 28 additions & 66 deletions

File tree

script/publish.ts

100755100644
Lines changed: 28 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@ import { fileURLToPath } from "url"
66

77
console.log("=== publishing ===\n")
88

9+
const dir = fileURLToPath(new URL("..", import.meta.url))
10+
process.chdir(dir)
11+
912
const tag = `v${Script.version}`
1013

1114
const pkgjsons = await Array.fromAsync(
@@ -14,64 +17,29 @@ const pkgjsons = await Array.fromAsync(
1417
}),
1518
).then((arr) => arr.filter((x) => !x.includes("node_modules") && !x.includes("dist")))
1619

17-
const extensionToml = fileURLToPath(new URL("../packages/extensions/zed/extension.toml", import.meta.url))
18-
const publishPackageJsons = ["packages/plugin/package.json", "packages/sdk/js/package.json"]
19-
20-
async function hasChanges() {
21-
return (await $`git diff --quiet && git diff --cached --quiet`.nothrow()).exitCode !== 0
22-
}
23-
24-
async function hasPublishPackageJsonChanges() {
25-
if ((await $`git diff --quiet -- ${publishPackageJsons}`.nothrow()).exitCode !== 0) return true
26-
return (await $`git diff --cached --quiet -- ${publishPackageJsons}`.nothrow()).exitCode !== 0
27-
}
28-
29-
async function logPublishPackageJsonChanges() {
30-
await $`git status --short -- ${publishPackageJsons}`
31-
await $`git diff -- ${publishPackageJsons}`
32-
await $`git diff --cached -- ${publishPackageJsons}`
33-
}
34-
35-
async function releaseTagExists() {
36-
return (await $`git rev-parse -q --verify refs/tags/${tag}`.nothrow()).exitCode === 0
37-
}
38-
39-
async function prepareReleaseFiles() {
40-
for (const file of pkgjsons) {
41-
let pkg = await Bun.file(file).text()
42-
pkg = pkg.replaceAll(/"version": "[^"]+"/g, `"version": "${Script.version}"`)
43-
console.log("updated:", file)
44-
await Bun.file(file).write(pkg)
45-
}
46-
47-
let toml = await Bun.file(extensionToml).text()
48-
toml = toml.replace(/^version = "[^"]+"/m, `version = "${Script.version}"`)
49-
toml = toml.replaceAll(/releases\/download\/v[^/]+\//g, `releases/download/v${Script.version}/`)
50-
console.log("updated:", extensionToml)
51-
await Bun.file(extensionToml).write(toml)
52-
53-
await $`bun install`
54-
await $`./packages/sdk/js/script/build.ts`
55-
}
56-
5720
if (Script.release && !Script.preview) {
5821
await $`git fetch origin --tags`
5922
await $`git switch --detach`
6023
}
6124

62-
await prepareReleaseFiles()
63-
64-
if (Script.release && !Script.preview) {
65-
if (await releaseTagExists()) {
66-
console.log(`release tag ${tag} already exists, skipping tag creation`)
67-
} else {
68-
await $`git commit -am "release: ${tag}"`
69-
await $`git tag ${tag}`
70-
await $`git push origin refs/tags/${tag} --no-verify`
71-
await new Promise((resolve) => setTimeout(resolve, 5_000))
72-
}
25+
for (const file of pkgjsons) {
26+
let pkg = await Bun.file(file).text()
27+
pkg = pkg.replaceAll(/"version": "[^"]+"/g, `"version": "${Script.version}"`)
28+
console.log("updated:", file)
29+
await Bun.file(file).write(pkg)
7330
}
7431

32+
const extensionToml = fileURLToPath(new URL("../packages/extensions/zed/extension.toml", import.meta.url))
33+
let toml = await Bun.file(extensionToml).text()
34+
toml = toml.replace(/^version = "[^"]+"/m, `version = "${Script.version}"`)
35+
toml = toml.replaceAll(/releases\/download\/v[^/]+\//g, `releases/download/v${Script.version}/`)
36+
console.log("updated:", extensionToml)
37+
await Bun.file(extensionToml).write(toml)
38+
39+
await $`bun install`
40+
await import(`../packages/sdk/js/script/build.ts`)
41+
process.chdir(dir)
42+
7543
console.log("\n=== cli ===\n")
7644
await import(`../packages/opencode/script/publish.ts`)
7745

@@ -87,25 +55,19 @@ if (Script.release) {
8755
}
8856

8957
if (Script.release && !Script.preview) {
58+
process.chdir(dir)
59+
await $`git commit -am "release: ${tag}"`
60+
const releaseCommit = (await $`git rev-parse HEAD`.text()).trim()
61+
await $`git tag -d ${tag}`.nothrow()
62+
await $`git tag ${tag}`
63+
await $`git push origin refs/tags/${tag} --force-with-lease --no-verify`
64+
await new Promise((resolve) => setTimeout(resolve, 5_000))
9065
await $`git fetch origin`
91-
if (await hasPublishPackageJsonChanges()) {
92-
console.error("publish scripts left package.json changes before syncing dev")
93-
await logPublishPackageJsonChanges()
94-
throw new Error("packages/plugin/package.json or packages/sdk/js/package.json changed during publish")
95-
}
9666
await $`git checkout -B dev origin/dev`
97-
await prepareReleaseFiles()
98-
if (await hasChanges()) {
99-
await $`git commit -am "sync release versions for v${Script.version}"`
100-
await $`git push origin HEAD:dev --no-verify`
101-
} else {
102-
console.log(`dev already synced for ${tag}`)
103-
}
67+
await $`git cherry-pick ${releaseCommit}`
68+
await $`git push origin HEAD:dev --no-verify`
10469
}
10570

10671
if (Script.release) {
10772
await $`gh release edit ${tag} --draft=false --repo ${process.env.GH_REPO}`
10873
}
109-
110-
const dir = fileURLToPath(new URL("..", import.meta.url))
111-
process.chdir(dir)

0 commit comments

Comments
 (0)