#!/usr/bin/env bun import { $ } from "bun" import pkg from "../package.json" import { Script } from "@opencode-ai/script" import { fileURLToPath } from "url" const dir = fileURLToPath(new URL("..", import.meta.url)) process.chdir(dir) const { binaries } = await import("./build.ts") { const name = `${pkg.name}-${process.platform}-${process.arch}` console.log(`smoke test: running dist/${name}/bin/kilo --version`) await $`./dist/${name}/bin/kilo --version` } await $`mkdir -p ./dist/${pkg.name}` await $`cp -r ./bin ./dist/${pkg.name}/bin` await $`cp ./script/postinstall.mjs ./dist/${pkg.name}/postinstall.mjs` await Bun.file(`./dist/${pkg.name}/package.json`).write( JSON.stringify( { name: pkg.name, bin: { kilo: `./bin/kilo`, kilocode: `./bin/kilo`, }, scripts: { postinstall: "bun ./postinstall.mjs || node ./postinstall.mjs", }, version: Script.version, optionalDependencies: binaries, }, null, 2, ), ) const tags = [Script.channel] const tasks = Object.entries(binaries).map(async ([name]) => { if (process.platform !== "win32") { await $`chmod -R 755 .`.cwd(`./dist/${name}`) } await $`bun pm pack --destination ..`.cwd(`./dist/${name}`) }) await Promise.all(tasks) for (const tag of tags) { await $`cd ./dist/${pkg.name} && bun pm pack --destination ..` } if (!Script.preview) { // Create archives for GitHub release for (const key of Object.keys(binaries)) { if (key.includes("linux")) { await $`tar -czf ../../${key}.tar.gz *`.cwd(`dist/${key}/bin`) } else { await $`zip -r ../../${key}.zip *`.cwd(`dist/${key}/bin`) } } const image = "ghcr.io/Kilo-Org/kilo" const platforms = "linux/amd64,linux/arm64" const tags = [`${image}:${Script.version}`, `${image}:latest`] const tagFlags = tags.flatMap((t) => ["-t", t]) }