mirror of
https://github.com/anomalyco/opencode.git
synced 2026-05-21 11:26:39 +00:00
Reuse the existing draft release and tagged snapshot, skip already-published packages on retry, and sync dev before undrafting so release reruns stop rewriting history and can recover cleanly from partial failures.
33 lines
1.1 KiB
TypeScript
Executable File
33 lines
1.1 KiB
TypeScript
Executable File
#!/usr/bin/env bun
|
|
import { Script } from "@opencode-ai/script"
|
|
import { $ } from "bun"
|
|
import { fileURLToPath } from "url"
|
|
|
|
const dir = fileURLToPath(new URL("..", import.meta.url))
|
|
process.chdir(dir)
|
|
|
|
async function published(name: string, version: string) {
|
|
return (await $`npm view ${name}@${version} version`.nothrow()).exitCode === 0
|
|
}
|
|
|
|
await $`bun tsc`
|
|
const pkg = await import("../package.json").then(
|
|
(m) => m.default as { name: string; version: string; exports: Record<string, string> },
|
|
)
|
|
const original = JSON.parse(JSON.stringify(pkg))
|
|
if (await published(pkg.name, pkg.version)) {
|
|
console.log(`already published ${pkg.name}@${pkg.version}`)
|
|
process.exit(0)
|
|
}
|
|
for (const [key, value] of Object.entries(pkg.exports)) {
|
|
const file = value.replace("./src/", "./dist/").replace(".ts", "")
|
|
// @ts-ignore
|
|
pkg.exports[key] = {
|
|
import: file + ".js",
|
|
types: file + ".d.ts",
|
|
}
|
|
}
|
|
await Bun.write("package.json", JSON.stringify(pkg, null, 2))
|
|
await $`bun pm pack && npm publish *.tgz --tag ${Script.channel} --access public`
|
|
await Bun.write("package.json", JSON.stringify(original, null, 2))
|