import { $ } from "bun" export { getCurrentSidecar, getServerTarget, RUST_TARGET, SIDECAR_BINARIES } from "./target" export type Channel = "dev" | "beta" | "prod" export function resolveChannel(): Channel { const raw = Bun.env.OPENCODE_CHANNEL if (raw === "dev" || raw === "beta" || raw === "prod") return raw return "dev" } export async function copyBinaryToSidecarFolder(source: string) { const dir = `resources` await $`mkdir -p ${dir}` const dest = windowsify(`${dir}/opencode-cli`) await $`cp ${source} ${dest}` if (process.platform === "win32" && process.env.GITHUB_ACTIONS === "true") { await $`pwsh -NoLogo -NoProfile -ExecutionPolicy Bypass -File ../../script/sign-windows.ps1 ${dest}` } if (process.platform === "darwin") await $`codesign --force --sign - ${dest}` console.log(`Copied ${source} to ${dest}`) } export function windowsify(path: string) { if (path.endsWith(".exe")) return path return `${path}${process.platform === "win32" ? ".exe" : ""}` }