Просмотр исходного кода

feat(cli): uninstall opencode installed via windows package managers (#8571)

Mani Sundararajan 1 месяц назад
Родитель
Сommit
0ccf9bd9ac
1 измененных файлов с 17 добавлено и 4 удалено
  1. 17 4
      packages/opencode/src/cli/cmd/uninstall.ts

+ 17 - 4
packages/opencode/src/cli/cmd/uninstall.ts

@@ -133,6 +133,8 @@ async function showRemovalSummary(targets: RemovalTargets, method: Installation.
       bun: "bun remove -g opencode-ai",
       yarn: "yarn global remove opencode-ai",
       brew: "brew uninstall opencode",
+      choco: "choco uninstall opencode",
+      scoop: "scoop uninstall opencode",
     }
     prompts.log.info(`  ✓ Package: ${cmds[method] || method}`)
   }
@@ -182,16 +184,27 @@ async function executeUninstall(method: Installation.Method, targets: RemovalTar
       bun: ["bun", "remove", "-g", "opencode-ai"],
       yarn: ["yarn", "global", "remove", "opencode-ai"],
       brew: ["brew", "uninstall", "opencode"],
+      choco: ["choco", "uninstall", "opencode"],
+      scoop: ["scoop", "uninstall", "opencode"],
     }
 
     const cmd = cmds[method]
     if (cmd) {
       spinner.start(`Running ${cmd.join(" ")}...`)
-      const result = await $`${cmd}`.quiet().nothrow()
+      const result =
+        method === "choco"
+          ? await $`echo Y | choco uninstall opencode -y -r`.quiet().nothrow()
+          : await $`${cmd}`.quiet().nothrow()
       if (result.exitCode !== 0) {
-        spinner.stop(`Package manager uninstall failed`, 1)
-        prompts.log.warn(`You may need to run manually: ${cmd.join(" ")}`)
-        errors.push(`Package manager: exit code ${result.exitCode}`)
+        spinner.stop(`Package manager uninstall failed: exit code ${result.exitCode}`, 1)
+        if (
+          method === "choco" &&
+          result.stdout.toString("utf8").includes("not running from an elevated command shell")
+        ) {
+          prompts.log.warn(`You may need to run '${cmd.join(" ")}' from an elevated command shell`)
+        } else {
+          prompts.log.warn(`You may need to run manually: ${cmd.join(" ")}`)
+        }
       } else {
         spinner.stop("Package removed")
       }