diff --git a/packages/server/scripts/copy-opencode-config.mjs b/packages/server/scripts/copy-opencode-config.mjs index b63b8627..ab952f9d 100644 --- a/packages/server/scripts/copy-opencode-config.mjs +++ b/packages/server/scripts/copy-opencode-config.mjs @@ -1,4 +1,5 @@ #!/usr/bin/env node +import { spawnSync } from "child_process" import { cpSync, existsSync, mkdirSync, rmSync } from "fs" import path from "path" import { fileURLToPath } from "url" @@ -8,12 +9,37 @@ const __dirname = path.dirname(__filename) const cliRoot = path.resolve(__dirname, "..") const sourceDir = path.resolve(cliRoot, "../opencode-config") const targetDir = path.resolve(cliRoot, "dist/opencode-config") +const nodeModulesDir = path.resolve(sourceDir, "node_modules") +const npmCmd = process.platform === "win32" ? "npm.cmd" : "npm" if (!existsSync(sourceDir)) { console.error(`[copy-opencode-config] Missing source directory at ${sourceDir}`) process.exit(1) } +if (!existsSync(nodeModulesDir)) { + console.log(`[copy-opencode-config] Installing opencode-config dependencies in ${sourceDir}`) + const result = spawnSync( + npmCmd, + [ + "install", + "--prefix", + sourceDir, + "--omit=dev", + "--ignore-scripts", + "--fund=false", + "--audit=false", + "--package-lock=false", + "--workspaces=false", + ], + { cwd: sourceDir, stdio: "inherit", env: { ...process.env, npm_config_workspaces: "false" } }, + ) + if (result.status !== 0) { + console.error("[copy-opencode-config] Failed to install opencode-config dependencies") + process.exit(result.status ?? 1) + } +} + rmSync(targetDir, { recursive: true, force: true }) mkdirSync(path.dirname(targetDir), { recursive: true }) cpSync(sourceDir, targetDir, { recursive: true })