From 9ed3b0742f3861c5cbb0974329b13a228dcfd1a7 Mon Sep 17 00:00:00 2001 From: Dax Date: Thu, 29 Jan 2026 13:17:55 -0500 Subject: ci (#11149) Co-authored-by: opencode --- script/publish-complete.ts | 14 ------- script/publish-start.ts | 96 ---------------------------------------------- script/publish.ts | 83 +++++++++++++++++++++++++++++++++++++++ script/version.ts | 17 ++++++++ 4 files changed, 100 insertions(+), 110 deletions(-) delete mode 100755 script/publish-complete.ts delete mode 100755 script/publish-start.ts create mode 100755 script/publish.ts create mode 100755 script/version.ts (limited to 'script') diff --git a/script/publish-complete.ts b/script/publish-complete.ts deleted file mode 100755 index a3bdceae0..000000000 --- a/script/publish-complete.ts +++ /dev/null @@ -1,14 +0,0 @@ -#!/usr/bin/env bun - -import { Script } from "@opencode-ai/script" -import { $ } from "bun" - -if (!Script.preview) { - await $`gh release edit v${Script.version} --draft=false` -} - -await $`bun install` - -await $`gh release download --pattern "opencode-linux-*64.tar.gz" --pattern "opencode-darwin-*64.zip" -D dist` - -await import(`../packages/opencode/script/publish-registries.ts`) diff --git a/script/publish-start.ts b/script/publish-start.ts deleted file mode 100755 index 474e01a64..000000000 --- a/script/publish-start.ts +++ /dev/null @@ -1,96 +0,0 @@ -#!/usr/bin/env bun - -import { $ } from "bun" -import { Script } from "@opencode-ai/script" -import { buildNotes, getLatestRelease } from "./changelog" - -const highlightsTemplate = ` - - - - -` - -let notes: string[] = [] - -console.log("=== publishing ===\n") - -if (!Script.preview) { - const previous = await getLatestRelease() - notes = await buildNotes(previous, "HEAD") - // notes.unshift(highlightsTemplate) -} - -const pkgjsons = await Array.fromAsync( - new Bun.Glob("**/package.json").scan({ - absolute: true, - }), -).then((arr) => arr.filter((x) => !x.includes("node_modules") && !x.includes("dist"))) - -for (const file of pkgjsons) { - let pkg = await Bun.file(file).text() - pkg = pkg.replaceAll(/"version": "[^"]+"/g, `"version": "${Script.version}"`) - console.log("updated:", file) - await Bun.file(file).write(pkg) -} - -const extensionToml = new URL("../packages/extensions/zed/extension.toml", import.meta.url).pathname -let toml = await Bun.file(extensionToml).text() -toml = toml.replace(/^version = "[^"]+"/m, `version = "${Script.version}"`) -toml = toml.replaceAll(/releases\/download\/v[^/]+\//g, `releases/download/v${Script.version}/`) -console.log("updated:", extensionToml) -await Bun.file(extensionToml).write(toml) - -await $`bun install` - -console.log("\n=== opencode ===\n") -await import(`../packages/opencode/script/publish.ts`) - -console.log("\n=== sdk ===\n") -await import(`../packages/sdk/js/script/publish.ts`) - -console.log("\n=== plugin ===\n") -await import(`../packages/plugin/script/publish.ts`) - -const dir = new URL("..", import.meta.url).pathname -process.chdir(dir) - -let output = `version=${Script.version}\n` - -if (!Script.preview) { - await $`git commit -am "release: v${Script.version}"` - await $`git tag v${Script.version}` - await $`git fetch origin` - await $`git cherry-pick HEAD..origin/dev`.nothrow() - await $`git push origin HEAD --tags --no-verify --force-with-lease` - await new Promise((resolve) => setTimeout(resolve, 5_000)) - await $`gh release create v${Script.version} -d --title "v${Script.version}" --notes ${notes.join("\n") || "No notable changes"} ./packages/opencode/dist/*.zip ./packages/opencode/dist/*.tar.gz` - const release = await $`gh release view v${Script.version} --json id,tagName`.json() - output += `release=${release.id}\n` - output += `tag=${release.tagName}\n` -} - -if (process.env.GITHUB_OUTPUT) { - await Bun.write(process.env.GITHUB_OUTPUT, output) -} diff --git a/script/publish.ts b/script/publish.ts new file mode 100755 index 000000000..23a6e5c9d --- /dev/null +++ b/script/publish.ts @@ -0,0 +1,83 @@ +#!/usr/bin/env bun + +import { $ } from "bun" +import { Script } from "@opencode-ai/script" +import { buildNotes, getLatestRelease } from "./changelog" + +const highlightsTemplate = ` + + + + +` + +console.log("=== publishing ===\n") + +const pkgjsons = await Array.fromAsync( + new Bun.Glob("**/package.json").scan({ + absolute: true, + }), +).then((arr) => arr.filter((x) => !x.includes("node_modules") && !x.includes("dist"))) + +for (const file of pkgjsons) { + let pkg = await Bun.file(file).text() + pkg = pkg.replaceAll(/"version": "[^"]+"/g, `"version": "${Script.version}"`) + console.log("updated:", file) + await Bun.file(file).write(pkg) +} + +const extensionToml = new URL("../packages/extensions/zed/extension.toml", import.meta.url).pathname +let toml = await Bun.file(extensionToml).text() +toml = toml.replace(/^version = "[^"]+"/m, `version = "${Script.version}"`) +toml = toml.replaceAll(/releases\/download\/v[^/]+\//g, `releases/download/v${Script.version}/`) +console.log("updated:", extensionToml) +await Bun.file(extensionToml).write(toml) + +await $`bun install` +await import(`../packages/sdk/js/script/build.ts`) + +if (Script.release) { + const previous = await getLatestRelease() + const notes = await buildNotes(previous, "HEAD") + // notes.unshift(highlightsTemplate) + await $`git commit -am "release: v${Script.version}"` + await $`git tag v${Script.version}` + await $`git fetch origin` + await $`git cherry-pick HEAD..origin/dev`.nothrow() + await $`git push origin HEAD --tags --no-verify --force-with-lease` + await new Promise((resolve) => setTimeout(resolve, 5_000)) + await $`gh release edit v${Script.version} --draft=false --title "v${Script.version}" --notes ${notes.join("\n") || "No notable changes"}` +} + +console.log("\n=== cli ===\n") +await import(`../packages/opencode/script/publish.ts`) + +console.log("\n=== sdk ===\n") +await import(`../packages/sdk/js/script/publish.ts`) + +console.log("\n=== plugin ===\n") +await import(`../packages/plugin/script/publish.ts`) + +const dir = new URL("..", import.meta.url).pathname +process.chdir(dir) diff --git a/script/version.ts b/script/version.ts new file mode 100755 index 000000000..861417f75 --- /dev/null +++ b/script/version.ts @@ -0,0 +1,17 @@ +#!/usr/bin/env bun + +import { Script } from "@opencode-ai/script" +import { $ } from "bun" + +let output = [`version=${Script.version}`] + +if (!Script.preview) { + await $`gh release create v${Script.version} -d --title "v${Script.version}" ${Script.preview ? "--prerelease" : ""}` + const release = await $`gh release view v${Script.version} --json id,tagName`.json() + output.push(`release=${release.id}`) + output.push(`tag=${release.tagName}`) +} + +if (process.env.GITHUB_OUTPUT) { + await Bun.write(process.env.GITHUB_OUTPUT, output.join("\n")) +} -- cgit v1.2.3