@forge/cli
14.1.0-next.1-experimental-13c2f8d14.1.0-next.21-experimental-554d417
out/command-line/controller/install-controller.js~
out/command-line/controller/install-controller.jsModified+38−3
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
@@ -3,8 +3,9 @@
exports.InstallController = exports.NoDeploymentError = void 0;
const cli_shared_1 = require("@forge/cli-shared");
const manifest_1 = require("@forge/manifest");
const install_deeplinks_1 = require("./install-deeplinks");
+const global_app_1 = require("../../installations/global-app");
const register_version_commands_1 = require("../register-version-commands");
class NoDeploymentError extends Error {
constructor(environment) {
super(cli_shared_1.Text.install.error.noDeploymentFound(environment));
@@ -21,9 +22,10 @@
supportedProductsService;
statsigService;
devSpaceService;
siteService;
- constructor(appConfigProvider, configFile, ui, installAppSiteCommand, installationService, installView, supportedProductsService, statsigService, devSpaceService, siteService) {
+ globalInstallController;
+ constructor(appConfigProvider, configFile, ui, installAppSiteCommand, installationService, installView, supportedProductsService, statsigService, devSpaceService, siteService, globalInstallController) {
this.appConfigProvider = appConfigProvider;
this.configFile = configFile;
this.ui = ui;
this.installAppSiteCommand = installAppSiteCommand;
@@ -32,8 +34,9 @@
this.supportedProductsService = supportedProductsService;
this.statsigService = statsigService;
this.devSpaceService = devSpaceService;
this.siteService = siteService;
+ this.globalInstallController = globalInstallController;
}
async securityPrompt(site) {
this.ui.info(cli_shared_1.Text.install.security.banner(site.host));
let isTrustedApp = true;
@@ -210,11 +213,43 @@
throw new cli_shared_1.UserError(cli_shared_1.Text.install.error.majorVersionNotFound);
}
return result;
}
- async run({ environment, site, products, upgrade, confirmScopes, license, licenseModes, usersWithAccess, nonInteractive, majorVersion, appIdOverride }) {
+ async run({ environment, site, products, upgrade, confirmScopes, license, licenseModes, usersWithAccess, nonInteractive, majorVersion, appIdOverride, unitId }) {
const id = appIdOverride ?? (await this.appConfigProvider()).id;
await this.devSpaceService.displayEnforcementWarningsIfNeeded(this.ui, id, 'install');
+ let manifestConfig;
+ if (!appIdOverride) {
+ manifestConfig = await this.configFile.readConfig();
+ const { app } = manifestConfig;
+ if ((0, global_app_1.isGlobalApp)(app)) {
+ const { isUpgrade, isCodeUpgrade } = this.validateUpgradeTarget(upgrade);
+ if (isUpgrade) {
+ const majorVersionId = majorVersion
+ ? (await this.getVersionPermissionsByMajorVersion(id, environment, majorVersion)).versionId
+ : undefined;
+ await this.globalInstallController.runUpgrade({
+ appId: id,
+ environment,
+ nonInteractive,
+ unitId,
+ majorVersionId,
+ isCodeUpgrade
+ });
+ }
+ else {
+ await this.globalInstallController.run({
+ appId: id,
+ environment,
+ nonInteractive,
+ unitId,
+ product: products?.[0],
+ site
+ });
+ }
+ return;
+ }
+ }
const { isUpgrade, isCodeUpgrade } = this.validateUpgradeTarget(upgrade);
const text = isUpgrade ? cli_shared_1.Text.upgrade : cli_shared_1.Text.install;
const validLicense = this.validateLicenseOption(license, environment);
const overrides = await this.validateEcosystemAppInstallationOverridesInput(licenseModes, usersWithAccess, environment);
@@ -273,9 +308,9 @@
let manifestEgressAddresses = [...environmentEgressAddresses];
let manifestModules;
if (!appIdOverride) {
const [{ permissions, modules }, manifestEgressEntries] = await Promise.all([
- this.configFile.readConfig(),
+ manifestConfig ? Promise.resolve(manifestConfig) : this.configFile.readConfig(),
this.configFile.getEgressPermissions()
]);
this.checkForUIKit1Modules(modules);
manifestModules = modules;