@swell/cli
Version:
Swell's command line interface/utility
46 lines (45 loc) • 2.02 kB
JavaScript
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)}.`);
}
}