vtex
Version:
The platform for e-commerce apps
62 lines (61 loc) • 3.02 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const chalk_1 = tslib_1.__importDefault(require("chalk"));
const errors_1 = require("../../error/errors");
const Sponsor_1 = require("../../clients/IOClients/apps/Sponsor");
const SessionManager_1 = require("../../session/SessionManager");
const logger_1 = tslib_1.__importDefault(require("../../logger"));
const utils_1 = require("../utils");
const switch_1 = require("../../../modules/auth/switch");
const prompts_1 = require("../prompts");
const promptSwitchToAccount = async (account, initial) => {
const reason = initial
? `Initial edition can only be set by ${chalk_1.default.blue(account)} account`
: `Only current account sponsor (${chalk_1.default.blue(account)}) can change its edition`;
const proceed = await prompts_1.promptConfirm(`${reason}. Do you want to switch to account ${chalk_1.default.blue(account)}?`);
if (!proceed) {
return;
}
await switch_1.switchAccount(account, {});
};
async function setEdition(edition, workspace, autoSwitchBack = false) {
const session = SessionManager_1.SessionManager.getSingleton();
const { account: previousAccount, workspace: previousWorkspace } = session;
const targetAccount = session.account;
const targetWorkspace = workspace !== null && workspace !== void 0 ? workspace : session.workspace;
const workspaceNotice = targetWorkspace === 'master' ? '' : ` in workspace ${chalk_1.default.blue(targetWorkspace)}`;
logger_1.default.info(`Changing edition of account ${chalk_1.default.blue(targetAccount)}${workspaceNotice}.`);
const sponsorClient = Sponsor_1.Sponsor.createClient();
const sponsorAccount = await sponsorClient.getSponsorAccount();
if (!sponsorAccount) {
if (targetWorkspace !== 'master') {
throw new errors_1.CommandError('Can only set initial edition in master workspace');
}
await promptSwitchToAccount('vtex', true);
}
else {
if (targetWorkspace === 'master') {
await utils_1.promptWorkspaceMaster(targetWorkspace);
}
await promptSwitchToAccount(sponsorAccount, false);
}
try {
const sponsorClientForSponsorAccount = Sponsor_1.Sponsor.createClient();
await sponsorClientForSponsorAccount.setEdition(targetAccount, targetWorkspace, edition);
logger_1.default.info(`Successfully changed edition${workspaceNotice} of account ${chalk_1.default.blue(targetAccount)}.`);
}
catch (ex) {
logger_1.default.error(`Failed to change edition of account ${chalk_1.default.blue(targetAccount)}.`);
throw ex;
}
finally {
if (autoSwitchBack) {
await switch_1.returnToPreviousAccount({ previousAccount, previousWorkspace, promptConfirmation: false });
}
else {
await switch_1.returnToPreviousAccount({ previousAccount, previousWorkspace });
}
}
}
exports.default = setEdition;