npm package diff
Package: @forge/cli
Versions: 11.0.0 - 11.0.1-next.14
File: package/out/command-line/uninstall-command-helpers.js
Index: package/out/command-line/uninstall-command-helpers.js
===================================================================
--- package/out/command-line/uninstall-command-helpers.js
+++ package/out/command-line/uninstall-command-helpers.js
@@ -0,0 +1,106 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.performMultipleUninstalls = exports.performSingleUninstall = exports.getInstallationsFromSelection = exports.getMultiChoiceOptionsForUninstall = void 0;
+const cli_shared_1 = require("@forge/cli-shared");
+const shared_1 = require("../installations/shared");
+const errors_1 = require("./errors");
+function addPrimarySuffix(productDisplayName, secondaryCount) {
+ return secondaryCount ? `${productDisplayName} (Primary)` : productDisplayName;
+}
+const getMultiChoiceOptionsForUninstall = (filteredInstallations) => {
+ return filteredInstallations.reduce((acc, { id, environmentKey, site, product, secondaryProducts, secondaryContexts }, idx) => {
+ acc.push({
+ names: [
+ (0, cli_shared_1.environmentToOption)(environmentKey),
+ site,
+ addPrimarySuffix((0, cli_shared_1.productDisplayName)(product), secondaryProducts?.length)
+ ],
+ value: id,
+ extra: {
+ installationIdx: idx,
+ product: product,
+ primary: !!secondaryProducts?.length
+ }
+ });
+ if (secondaryProducts) {
+ secondaryProducts.forEach((secondaryProduct, secondaryIdx) => {
+ const contextAri = secondaryContexts?.[secondaryIdx];
+ acc.push({
+ names: [(0, cli_shared_1.environmentToOption)(environmentKey), site, (0, cli_shared_1.productDisplayName)(secondaryProduct)],
+ value: id,
+ extra: { secondary: true, contextAri, installationIdx: idx, product: secondaryProduct }
+ });
+ });
+ }
+ return acc;
+ }, []);
+};
+exports.getMultiChoiceOptionsForUninstall = getMultiChoiceOptionsForUninstall;
+const getInstallationsFromSelection = (options, selectedSitesIndexes, filteredInstallations) => {
+ const firstUninstall = options
+ .filter((_, idx) => selectedSitesIndexes.includes(idx))
+ .filter(({ extra }) => !extra?.primary)
+ .map(({ extra }) => ({
+ ...filteredInstallations[extra.installationIdx],
+ ...(extra.secondary && { context: extra.contextAri, product: extra.product })
+ }));
+ const secondUninstall = options
+ .filter((_, idx) => selectedSitesIndexes.includes(idx))
+ .filter(({ extra }) => extra?.primary)
+ .map(({ extra }) => filteredInstallations[extra.installationIdx]);
+ return [firstUninstall, secondUninstall];
+};
+exports.getInstallationsFromSelection = getInstallationsFromSelection;
+const performSingleUninstall = async (installId, { ui, commands: { uninstallAppCommand } }) => {
+ const installation = await ui.displayProgress(() => uninstallAppCommand.execute(installId), cli_shared_1.Text.uninstall.cmd.start, (result) => ({
+ successful: !!result.successful,
+ message: cli_shared_1.Text.uninstall.cmd.success(false)
+ }));
+ const uninstallMessageFormat = installation.successful ? cli_shared_1.Text.uninstall.done : cli_shared_1.Text.uninstall.failed;
+ const uninstallMessage = uninstallMessageFormat((0, cli_shared_1.productDisplayName)(installation.product), installation.site, installation.environmentKey, false);
+ if (installation.successful) {
+ ui.info(uninstallMessage);
+ }
+ else {
+ ui.error(new shared_1.UninstallAppError(uninstallMessage));
+ }
+};
+exports.performSingleUninstall = performSingleUninstall;
+const performMultipleUninstalls = async (appsToUninstallFirst, appsToUninstallSecond, { ui, commands: { uninstallAppCommand } }) => {
+ const filteredInstallations = appsToUninstallFirst.filter(({ product }) => product !== 'identity');
+ const hasMultipleNonIdentityApps = filteredInstallations.length > 1;
+ const uninstalledApps = await ui.displayProgress(async () => {
+ const result1 = await uninstallAppCommand.batchExecute([], appsToUninstallFirst);
+ if (result1.some(({ successful }) => successful === false)) {
+ return result1;
+ }
+ const result2 = await uninstallAppCommand.batchExecute([], appsToUninstallSecond);
+ return result1.concat(result2);
+ }, cli_shared_1.Text.uninstall.cmd.start, (result) => {
+ const isSuccessful = !result.some(({ successful }) => successful === false);
+ return {
+ successful: isSuccessful,
+ message: cli_shared_1.Text.uninstall.cmd.success(hasMultipleNonIdentityApps)
+ };
+ });
+ const deferredErrors = [];
+ uninstalledApps.forEach((uninstall) => {
+ const uninstallMessageFormat = uninstall.successful ? cli_shared_1.Text.uninstall.done : cli_shared_1.Text.uninstall.failed;
+ const formattedMessage = uninstallMessageFormat((0, cli_shared_1.productDisplayName)(uninstall.product), uninstall.site, uninstall.environmentKey, hasMultipleNonIdentityApps);
+ if (uninstall.successful && uninstall.product !== 'identity') {
+ ui.info(formattedMessage);
+ }
+ else if (!uninstall.successful) {
+ const uninstallError = new shared_1.UninstallAppError(formattedMessage);
+ ui.error(uninstallError);
+ deferredErrors.push(uninstallError);
+ }
+ });
+ if (uninstalledApps.some(({ successful }) => successful === false)) {
+ throw new errors_1.DeferredErrors(deferredErrors);
+ }
+ if (hasMultipleNonIdentityApps) {
+ ui.info(cli_shared_1.Text.uninstall.interactive.done);
+ }
+};
+exports.performMultipleUninstalls = performMultipleUninstalls;