summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--packages/opencode/src/cli/cmd/upgrade.ts16
-rw-r--r--packages/opencode/src/installation/index.ts1
2 files changed, 14 insertions, 3 deletions
diff --git a/packages/opencode/src/cli/cmd/upgrade.ts b/packages/opencode/src/cli/cmd/upgrade.ts
index 8c1abdeab..65f3bab4d 100644
--- a/packages/opencode/src/cli/cmd/upgrade.ts
+++ b/packages/opencode/src/cli/cmd/upgrade.ts
@@ -27,9 +27,19 @@ export const UpgradeCommand = {
const detectedMethod = await Installation.method()
const method = (args.method as Installation.Method) ?? detectedMethod
if (method === "unknown") {
- prompts.log.error(`opencode is installed to ${process.execPath} and seems to be managed by a package manager`)
- prompts.outro("Done")
- return
+ prompts.log.error(`opencode is installed to ${process.execPath} and may be managed by a package manager`)
+ const install = await prompts.select({
+ message: "Install anyways?",
+ options: [
+ { label: "Yes", value: true },
+ { label: "No", value: false },
+ ],
+ initialValue: false,
+ })
+ if (!install) {
+ prompts.outro("Done")
+ return
+ }
}
prompts.log.info("Using method: " + method)
const target = args.target ? args.target.replace(/^v/, "") : await Installation.latest()
diff --git a/packages/opencode/src/installation/index.ts b/packages/opencode/src/installation/index.ts
index b01ce5f7b..95b431ecd 100644
--- a/packages/opencode/src/installation/index.ts
+++ b/packages/opencode/src/installation/index.ts
@@ -50,6 +50,7 @@ export namespace Installation {
export async function method() {
if (process.execPath.includes(path.join(".opencode", "bin"))) return "curl"
+ if (process.execPath.includes(path.join(".local", "bin"))) return "curl"
const exec = process.execPath.toLowerCase()
const checks = [