UNPKG

abyss-ai

Version:

Autonomous AI coding agent - enhanced OpenCode with autonomous capabilities

58 lines (54 loc) 1.97 kB
import type { Argv } from "yargs" import { UI } from "../ui" import * as prompts from "@clack/prompts" import { Installation } from "../../installation" export const UpgradeCommand = { command: "upgrade [target]", describe: "upgrade opencode to the latest or a specific version", builder: (yargs: Argv) => { return yargs .positional("target", { describe: "version to upgrade to, for ex '0.1.48' or 'v0.1.48'", type: "string", }) .option("method", { alias: "m", describe: "installation method to use", type: "string", choices: ["curl", "npm", "pnpm", "bun", "brew"], }) }, handler: async (args: { target?: string; method?: string }) => { UI.empty() UI.println(UI.logo(" ")) UI.empty() prompts.intro("Upgrade") 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.info("Using method: " + method) const target = args.target ?? (await Installation.latest()) if (Installation.VERSION === target) { prompts.log.warn(`opencode upgrade skipped: ${target} is already installed`) prompts.outro("Done") return } prompts.log.info(`From ${Installation.VERSION}${target}`) const spinner = prompts.spinner() spinner.start("Upgrading...") const err = await Installation.upgrade(method, target).catch((err) => err) if (err) { spinner.stop("Upgrade failed") if (err instanceof Installation.UpgradeFailedError) prompts.log.error(err.data.stderr) else if (err instanceof Error) prompts.log.error(err.message) prompts.outro("Done") return } spinner.stop("Upgrade complete") prompts.outro("Done") }, }