#!/usr/bin/env bun
import { $ } from "bun"
import path from "path"
import { fileURLToPath } from "url"
const __filename = fileURLToPath(import.meta.url)
const __dirname = path.dirname(__filename)
const opencodeDir = path.resolve(__dirname, "..")
const monorepoRoot = path.resolve(opencodeDir, "../..")
console.log("=== Pipeline Prepare ===")
console.log(`Monorepo root: ${monorepoRoot}`)
console.log(`Opencode dir: ${opencodeDir}`)
const neededWorkspaces = [
"packages/opencode",
"packages/plugin",
"packages/script",
"packages/sdk/js",
"packages/core",
"packages/app",
"packages/ui",
"packages/web",
"packages/http-recorder",
"packages/llm",
]
const rootPkgPath = path.join(monorepoRoot, "package.json")
const rootPkg = JSON.parse(await Bun.file(rootPkgPath).text())
const originalCount = rootPkg.workspaces.packages.length
rootPkg.workspaces.packages = neededWorkspaces
await Bun.write(rootPkgPath, JSON.stringify(rootPkg, null, 2))
console.log(`\n[1/4] Filtered workspaces: ${originalCount} entries → ${neededWorkspaces.length} packages`)
console.log("\n[2/4] Cleaning dist and node_modules...")
await $`rm -rf ${path.join(opencodeDir, "dist")} ${path.join(opencodeDir, "node_modules")}`
console.log("\n[3/4] Installing dependencies (monorepo root)...")
await $`cd ${monorepoRoot} && bun install`
console.log("\n[4/4] Installing dependencies (packages/opencode)...")
await $`cd ${opencodeDir} && bun install`
console.log("\n=== Pipeline Prepare Complete ===")