UNPKG

@swell/cli

Version:

Swell's command line interface/utility

46 lines (45 loc) 2.02 kB
import { confirm } from '@inquirer/prompts'; import { Flags } from '@oclif/core'; import config from '../../lib/config.js'; import style from '../../lib/style.js'; import { RemoteAppCommand } from '../../remote-app-command.js'; export default class AppUninstall extends RemoteAppCommand { static description = 'Uninstalls an existing App'; static flags = { env: Flags.string({ default: 'test', description: 'environment to uninstall the app from', }), store: Flags.string({ char: 's', description: 'store id to uninstall the app from', }), }; static orientation = { env: 'test', }; async run() { const { flags } = await this.parse(AppUninstall); const { env, store } = flags; this.app = await this.getAppWithConfig(); const storeToUninstall = store || config.getDefaultStore(); config.ensureLoggedIn(storeToUninstall); const uninstallMsg = `${style.appConfigValue(this.app.name)} from store ${style.storeId(storeToUninstall)} with version ${style.appConfigValue(this.app.version)}`; const continueUninstall = await confirm({ message: `Uninstalling ${uninstallMsg}. Ok to continue?`, }); if (!continueUninstall) { this.logError('Uninstall cancelled'); return; } const clientApp = await this.api.get({ adminPath: `/client/apps/${this.app.id}` }, { query: { env } }); if (!clientApp) { this.error(`Error uninstalling ${uninstallMsg}: app not installed on store.`); } if (clientApp.uninstalled) { this.error(`Error uninstalling ${uninstallMsg}: app already uninstalled on store.`); } await this.api.put({ adminPath: `/client/apps/${this.app.id}` }, { body: { env, uninstalled: true } }); this.log(`${style.appConfigValue(this.app.name)} app uninstalled from store ${style.storeId(storeToUninstall)}.`); } }