Improve opencode-config install on Windows
This commit is contained in:
@@ -10,7 +10,7 @@ const cliRoot = path.resolve(__dirname, "..")
|
|||||||
const sourceDir = path.resolve(cliRoot, "../opencode-config")
|
const sourceDir = path.resolve(cliRoot, "../opencode-config")
|
||||||
const targetDir = path.resolve(cliRoot, "dist/opencode-config")
|
const targetDir = path.resolve(cliRoot, "dist/opencode-config")
|
||||||
const nodeModulesDir = path.resolve(sourceDir, "node_modules")
|
const nodeModulesDir = path.resolve(sourceDir, "node_modules")
|
||||||
const npmCmd = process.platform === "win32" ? "npm.cmd" : "npm"
|
const npmCandidates = process.platform === "win32" ? ["npm.cmd", "npm"] : ["npm"]
|
||||||
|
|
||||||
if (!existsSync(sourceDir)) {
|
if (!existsSync(sourceDir)) {
|
||||||
console.error(`[copy-opencode-config] Missing source directory at ${sourceDir}`)
|
console.error(`[copy-opencode-config] Missing source directory at ${sourceDir}`)
|
||||||
@@ -19,24 +19,41 @@ if (!existsSync(sourceDir)) {
|
|||||||
|
|
||||||
if (!existsSync(nodeModulesDir)) {
|
if (!existsSync(nodeModulesDir)) {
|
||||||
console.log(`[copy-opencode-config] Installing opencode-config dependencies in ${sourceDir}`)
|
console.log(`[copy-opencode-config] Installing opencode-config dependencies in ${sourceDir}`)
|
||||||
const result = spawnSync(
|
|
||||||
npmCmd,
|
const npmArgs = [
|
||||||
[
|
"install",
|
||||||
"install",
|
"--omit=dev",
|
||||||
"--prefix",
|
"--ignore-scripts",
|
||||||
sourceDir,
|
"--fund=false",
|
||||||
"--omit=dev",
|
"--audit=false",
|
||||||
"--ignore-scripts",
|
"--package-lock=false",
|
||||||
"--fund=false",
|
"--workspaces=false",
|
||||||
"--audit=false",
|
]
|
||||||
"--package-lock=false",
|
|
||||||
"--workspaces=false",
|
let lastResult
|
||||||
],
|
for (const npmCmd of npmCandidates) {
|
||||||
{ cwd: sourceDir, stdio: "inherit", env: { ...process.env, npm_config_workspaces: "false" } },
|
const result = spawnSync(npmCmd, npmArgs, {
|
||||||
)
|
cwd: sourceDir,
|
||||||
if (result.status !== 0) {
|
stdio: "inherit",
|
||||||
|
env: { ...process.env, npm_config_workspaces: "false" },
|
||||||
|
})
|
||||||
|
|
||||||
|
lastResult = result
|
||||||
|
|
||||||
|
if (result.error?.code === "ENOENT") {
|
||||||
|
console.warn(`[copy-opencode-config] ${npmCmd} not found on PATH, trying next candidate`)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!lastResult || lastResult.status !== 0) {
|
||||||
|
if (lastResult?.error) {
|
||||||
|
console.error("[copy-opencode-config] npm install failed to start", lastResult.error)
|
||||||
|
}
|
||||||
console.error("[copy-opencode-config] Failed to install opencode-config dependencies")
|
console.error("[copy-opencode-config] Failed to install opencode-config dependencies")
|
||||||
process.exit(result.status ?? 1)
|
process.exit(lastResult?.status ?? 1)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user