mirror of
https://github.com/anomalyco/opencode.git
synced 2026-11-08 09:37:47 +03:00
70 lines
3.1 KiB
JavaScript
70 lines
3.1 KiB
JavaScript
#!/usr/bin/env node
|
|
|
|
import { execFileSync } from "node:child_process"
|
|
import { copyFile, cp, mkdir, mkdtemp, readFile, rm, writeFile } from "node:fs/promises"
|
|
import os from "node:os"
|
|
import path from "node:path"
|
|
import { fileURLToPath } from "node:url"
|
|
|
|
const root = fileURLToPath(new URL("..", import.meta.url))
|
|
const dist = path.resolve(root, process.argv[2] ?? "dist")
|
|
const output = path.join(dist, "npm")
|
|
const manifest = JSON.parse(await readFile(path.join(root, "npm/package.json"), "utf8"))
|
|
const targets = [
|
|
{ target: "aarch64-apple-darwin", platform: "darwin", arch: "arm64" },
|
|
{ target: "x86_64-apple-darwin", platform: "darwin", arch: "x64" },
|
|
{ target: "aarch64-unknown-linux-gnu", platform: "linux", arch: "arm64", libc: "glibc", suffix: "gnu" },
|
|
{ target: "aarch64-unknown-linux-musl", platform: "linux", arch: "arm64", libc: "musl", suffix: "musl" },
|
|
{ target: "x86_64-unknown-linux-gnu", platform: "linux", arch: "x64", libc: "glibc", suffix: "gnu" },
|
|
{ target: "x86_64-unknown-linux-musl", platform: "linux", arch: "x64", libc: "musl", suffix: "musl" },
|
|
{ target: "aarch64-pc-windows-msvc", platform: "win32", arch: "arm64" },
|
|
{ target: "x86_64-pc-windows-msvc", platform: "win32", arch: "x64" },
|
|
]
|
|
|
|
await rm(output, { recursive: true, force: true })
|
|
await mkdir(output, { recursive: true })
|
|
|
|
for (const target of targets) {
|
|
const suffix = [target.platform, target.arch, target.suffix].filter(Boolean).join("-")
|
|
const name = `@opencode/pty-${suffix}`
|
|
const directory = path.join(output, `opencode-pty-${suffix}`)
|
|
const archive = path.join(dist, `opencode-pty-${manifest.version}-${target.target}.tar.gz`)
|
|
const binary = target.platform === "win32" ? "opencode-pty.exe" : "opencode-pty"
|
|
const temporary = await mkdtemp(path.join(os.tmpdir(), "opencode-pty-npm-"))
|
|
try {
|
|
execFileSync("tar", ["-xzf", archive, "-C", temporary])
|
|
const executable = path.join(temporary, `opencode-pty-${manifest.version}-${target.target}`, binary)
|
|
await mkdir(path.join(directory, "bin"), { recursive: true })
|
|
await copyFile(executable, path.join(directory, "bin", binary))
|
|
await copyFile(path.join(root, "LICENSE"), path.join(directory, "LICENSE"))
|
|
await writeFile(
|
|
path.join(directory, "package.json"),
|
|
JSON.stringify(
|
|
{
|
|
name,
|
|
version: manifest.version,
|
|
description: `OpenCode persistent PTY service for ${suffix}`,
|
|
license: "MIT",
|
|
repository: { ...manifest.repository, directory: "packages/process-daemon" },
|
|
os: [target.platform],
|
|
cpu: [target.arch],
|
|
...(target.libc ? { libc: [target.libc] } : {}),
|
|
exports: { "./package.json": "./package.json", [`./bin/${binary}`]: `./bin/${binary}` },
|
|
files: ["bin"],
|
|
publishConfig: { access: "public" },
|
|
},
|
|
null,
|
|
2,
|
|
) + "\n",
|
|
)
|
|
} finally {
|
|
await rm(temporary, { recursive: true, force: true })
|
|
}
|
|
console.log(name)
|
|
}
|
|
|
|
const dispatcher = path.join(output, "opencode-pty")
|
|
await cp(path.join(root, "npm"), dispatcher, { recursive: true })
|
|
await copyFile(path.join(root, "LICENSE"), path.join(dispatcher, "LICENSE"))
|
|
console.log(manifest.name)
|