Fix cursor install defaulting to cwd instead of opencode config dir

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Kieran Klaassen
2026-02-12 13:32:06 -08:00
parent 7232f26e0e
commit d929b8f091

View File

@@ -88,7 +88,8 @@ export default defineCommand({
if (!bundle) { if (!bundle) {
throw new Error(`Target ${targetName} did not return a bundle.`) throw new Error(`Target ${targetName} did not return a bundle.`)
} }
const primaryOutputRoot = resolveTargetOutputRoot(targetName, outputRoot, codexHome) const hasExplicitOutput = Boolean(args.output && String(args.output).trim())
const primaryOutputRoot = resolveTargetOutputRoot(targetName, outputRoot, codexHome, hasExplicitOutput)
await target.write(primaryOutputRoot, bundle) await target.write(primaryOutputRoot, bundle)
console.log(`Installed ${plugin.manifest.name} to ${primaryOutputRoot}`) console.log(`Installed ${plugin.manifest.name} to ${primaryOutputRoot}`)
@@ -109,7 +110,7 @@ export default defineCommand({
console.warn(`Skipping ${extra}: no output returned.`) console.warn(`Skipping ${extra}: no output returned.`)
continue continue
} }
const extraRoot = resolveTargetOutputRoot(extra, path.join(outputRoot, extra), codexHome) const extraRoot = resolveTargetOutputRoot(extra, path.join(outputRoot, extra), codexHome, hasExplicitOutput)
await handler.write(extraRoot, extraBundle) await handler.write(extraRoot, extraBundle)
console.log(`Installed ${plugin.manifest.name} to ${extraRoot}`) console.log(`Installed ${plugin.manifest.name} to ${extraRoot}`)
} }
@@ -181,10 +182,13 @@ function resolveOutputRoot(value: unknown): string {
return path.join(os.homedir(), ".config", "opencode") return path.join(os.homedir(), ".config", "opencode")
} }
function resolveTargetOutputRoot(targetName: string, outputRoot: string, codexHome: string): string { function resolveTargetOutputRoot(targetName: string, outputRoot: string, codexHome: string, hasExplicitOutput: boolean): string {
if (targetName === "codex") return codexHome if (targetName === "codex") return codexHome
if (targetName === "droid") return path.join(os.homedir(), ".factory") if (targetName === "droid") return path.join(os.homedir(), ".factory")
if (targetName === "cursor") return path.join(outputRoot, ".cursor") if (targetName === "cursor") {
const base = hasExplicitOutput ? outputRoot : process.cwd()
return path.join(base, ".cursor")
}
return outputRoot return outputRoot
} }