/* eslint-disable no-console */ import output from '@/output' import { createPluginUpgradeTasks } from '@/scripts' import { semverMajor, getCliVersionByMetaPath, getLastestVersionWithRange, DEFAULT_CLI_PLUGIN_PACKAGE_NAME, } from '@ones-open/cli-utils' import boxen from 'boxen' import Listr from 'listr' async function upgrade() { try { const currentCliPluginVerson = (await getCliVersionByMetaPath(import.meta.url)) as string const versionRange = `${semverMajor(currentCliPluginVerson)}.x` // 当前大版本最新版本 const lastestVersion = (await getLastestVersionWithRange( DEFAULT_CLI_PLUGIN_PACKAGE_NAME, versionRange, )) as string // 只升级到当前大版本的最新版本,暂不支持跨大版本 if (currentCliPluginVerson === lastestVersion) { output.warn( boxen(` The version is the lastest in ${versionRange}! (Cross-version upgrades are not supported now!) `), ) return } const tasks = createPluginUpgradeTasks(lastestVersion) const upgradeTasks = new Listr(tasks) await upgradeTasks.run() const succeedMessage = `Congratulations! @ones-open/cli-plugin has been upgraded to the latest version(${lastestVersion})!` output.newline() output.success(succeedMessage) } catch (error) { output.error(error) } } export { upgrade }