npm package diff
Package: @forge/cli
Versions: 10.12.1-next.2 - 10.13.0-next.18
File: package/out/command-line/controller/install-controller.js
Index: package/out/command-line/controller/install-controller.js
===================================================================
--- package/out/command-line/controller/install-controller.js
+++ package/out/command-line/controller/install-controller.js
@@ -41,9 +41,9 @@
return;
}
}
}
- async installOrUpgrade(upgrade, environment, environmentType, site, product, appId, text, license) {
+ async installOrUpgrade(upgrade, environment, environmentType, site, product, appId, text, license, overrides) {
return this.ui.displayProgress(async () => {
if (upgrade) {
const isAlreadyUpdated = await this.installationService.upgradeInstallation(site, product, environment, appId);
return isAlreadyUpdated;
@@ -52,9 +52,10 @@
await this.installAppSiteCommand.execute({
environmentKey: environment,
site,
product,
- licenseOverride: license
+ licenseOverride: license,
+ overrides
});
return false;
}
}, text.cmd.start(environment, environmentType), (alreadyUpdated) => {
@@ -134,12 +135,13 @@
throw new cli_shared_1.UserError(cli_shared_1.Text.error.licenseOverrideErrors.prodSupport);
}
return upperCaseLicense;
}
- async run({ environment, site, product, upgrade, confirmScopes, license, nonInteractive }) {
+ async run({ environment, site, product, upgrade, confirmScopes, license, licenseModes, usersWithAccess, nonInteractive }) {
const { id } = await this.appConfigProvider();
const text = upgrade ? cli_shared_1.Text.upgrade : cli_shared_1.Text.install;
const validLicense = this.validateLicenseOption(license, environment);
+ const overrides = await this.validateEcosystemAppInstallationOverridesInput(licenseModes, usersWithAccess, environment);
if (upgrade && (!site || !product)) {
const upgradeResult = await this.promptForUpgrade(site, product, environment);
environment = upgradeResult.environment;
site = upgradeResult.site;
@@ -170,9 +172,9 @@
const addedScopes = await this.extractAddedScopes(environmentPermissions);
const scopesConfirmationResult = await this.installView.promptForPermissionsConfirmation(environmentPermissions, addedScopes, [...manifestScopes], manifestEgressAddresses, environment, confirmScopes, !!nonInteractive, text);
if (!scopesConfirmationResult)
return;
- const isAlreadyUpdated = await this.installOrUpgrade(upgrade, environment, environmentType, site, product, id, text, validLicense);
+ const isAlreadyUpdated = await this.installOrUpgrade(upgrade, environment, environmentType, site, product, id, text, validLicense, overrides);
if (isAlreadyUpdated) {
this.ui.info(cli_shared_1.Text.upgrade.alreadyUpdated.banner(environment, product, site.host));
}
else {
@@ -201,6 +203,55 @@
name: scope,
requiresInteractiveConsent: scopesWithInteractiveConsent.has(scope)
}));
}
+ isValidLicenseMode(value) {
+ return Object.values(cli_shared_1.EcosystemLicenseMode).includes(value);
+ }
+ validateLicenseModes(licenseModes, usersWithAccess, environment) {
+ if (licenseModes === undefined) {
+ return undefined;
+ }
+ if (usersWithAccess === undefined) {
+ throw new cli_shared_1.UserError(cli_shared_1.Text.error.licenseModesOverrideErrors.userWithAccessRequired);
+ }
+ if (environment === cli_shared_1.PRODUCTION_ENVIRONMENT_KEY) {
+ throw new cli_shared_1.UserError(cli_shared_1.Text.error.licenseModesOverrideErrors.prodEnvNotSupported);
+ }
+ if (!Array.isArray(licenseModes) || licenseModes.length === 0) {
+ throw new cli_shared_1.UserError(cli_shared_1.Text.error.licenseModesOverrideErrors.empty);
+ }
+ const ecosystemLicenseModes = new Set();
+ for (const licenseMode of licenseModes) {
+ const upperCaseLicenseMode = licenseMode.toUpperCase();
+ if (!this.isValidLicenseMode(upperCaseLicenseMode)) {
+ throw new cli_shared_1.UserError(cli_shared_1.Text.error.licenseModesOverrideErrors.invalid);
+ }
+ ecosystemLicenseModes.add(upperCaseLicenseMode);
+ }
+ return Array.from(ecosystemLicenseModes);
+ }
+ validateUsersWithAccess(licenseModes, usersWithAccess, environment) {
+ if (usersWithAccess === undefined)
+ return;
+ if (licenseModes === undefined) {
+ throw new cli_shared_1.UserError(cli_shared_1.Text.error.userWithAccessOverrideErrors.licenseModeRequired);
+ }
+ if (environment === cli_shared_1.PRODUCTION_ENVIRONMENT_KEY) {
+ throw new cli_shared_1.UserError(cli_shared_1.Text.error.userWithAccessOverrideErrors.prodEnvNotSupported);
+ }
+ if (!Array.isArray(usersWithAccess) || usersWithAccess.length === 0) {
+ throw new cli_shared_1.UserError(cli_shared_1.Text.error.userWithAccessOverrideErrors.empty);
+ }
+ if (usersWithAccess.length > cli_shared_1.Text.maxSizeOfUsersWithAccess) {
+ throw new cli_shared_1.UserError(cli_shared_1.Text.error.userWithAccessOverrideErrors.countSize(cli_shared_1.Text.maxSizeOfUsersWithAccess));
+ }
+ }
+ async validateEcosystemAppInstallationOverridesInput(licenseModes, usersWithAccess, environment) {
+ const ecosystemLicenseModes = this.validateLicenseModes(licenseModes, usersWithAccess, environment);
+ this.validateUsersWithAccess(ecosystemLicenseModes, usersWithAccess, environment);
+ return ecosystemLicenseModes && usersWithAccess
+ ? { licenseModes: ecosystemLicenseModes, usersWithAccess }
+ : undefined;
+ }
}
exports.InstallController = InstallController;