opencode/script/pack.ts

45 lines
1.3 KiB
TypeScript

#!/usr/bin/env bun
import { Script } from "@opencode/script"
import { $ } from "bun"
import { rm } from "node:fs/promises"
import path from "node:path"
// Runs `bun run pack` for every package published to npm, after moving every workspace to the build
// version so workspace dependencies pack at that version. Outputs land in dist/npm and dist/archives.
const root = path.resolve(import.meta.dir, "..")
process.chdir(root)
console.log(`=== packing ${Script.version} (${Script.channel}) ===\n`)
await rm("dist/npm", { recursive: true, force: true })
await rm("dist/archives", { recursive: true, force: true })
const pkgjsons = await Array.fromAsync(new Bun.Glob("**/package.json").scan({ absolute: true })).then((files) =>
files.filter((file) => !file.includes("node_modules") && !file.includes("dist")),
)
for (const file of pkgjsons) {
const text = await Bun.file(file).text()
await Bun.write(file, text.replaceAll(/"version": "[^"]+"/g, `"version": "${Script.version}"`))
}
await $`bun install`
for (const name of [
"schema",
"codemode",
"theme",
"ai",
"util",
"protocol",
"client",
"plugin",
"plugin-browser",
"core",
"simulation",
"server",
"sdk",
"ui",
"cli",
]) {
console.log(`\n=== ${name} ===\n`)
await $`bun run pack`.cwd(path.join("packages", name))
}