@forge/cli

12.22.012.22.0-experimental-04cc2b9
out/command-line/command.js
~out/command-line/command.jsModified
+23−10
Index: package/out/command-line/command.js
===================================================================
--- package/out/command-line/command.js
+++ package/out/command-line/command.js
@@ -1,9 +1,14 @@
 "use strict";
 Object.defineProperty(exports, "__esModule", { value: true });
-exports.environmentPrecondition = exports.validateShardContext = exports.validateContext = exports.getAutocompleteConfig = exports.Command = exports.WrapperError = void 0;
+exports.Command = exports.WrapperError = void 0;
+exports.getAutocompleteConfig = getAutocompleteConfig;
+exports.validateContext = validateContext;
+exports.validateShardContext = validateShardContext;
+exports.environmentPrecondition = environmentPrecondition;
 const tslib_1 = require("tslib");
 const commander_1 = tslib_1.__importStar(require("commander"));
+const ari_1 = require("@forge/util/packages/ari");
 const semver_1 = tslib_1.__importDefault(require("semver"));
 const cli_shared_1 = require("@forge/cli-shared");
 const environment_1 = require("./environment");
 const version_info_1 = require("./version-info");
@@ -162,9 +167,14 @@
     }
     requireManifestFile() {
         return this.precondition(this.preCommandController.verifyManifestExists());
     }
-    requireAppId() {
+    requireAppId(allowOverride = false) {
+        if (allowOverride) {
+            const option = new commander_1.Option('--app-id-override <appId>', cli_shared_1.Text.appIdOverride.desription).argParser((value) => ari_1.EcosystemAppAri.create({ appId: value }).toString());
+            this.cmd.addOption(option);
+            return this;
+        }
         return this.precondition(this.preCommandController.verifyManifestExistsWithAppConfig());
     }
     nonInteractiveOption(...args) {
         return this.clone({ requiredOptionFlags: args }).option('--non-interactive', cli_shared_1.Text.nonInteractive.description);
@@ -205,10 +215,10 @@
             return `with options ${JSON.stringify(argv)}`;
         }
         return '';
     }
-    environmentOption() {
-        return this.option('-e, --environment [environment]', cli_shared_1.Text.env.option).precondition(environmentPrecondition('environment', this.defaultEnvironmentController));
+    environmentOption(requireEnvironmentWithAppIdOverride = false) {
+        return this.option('-e, --environment [environment]', cli_shared_1.Text.env.option).precondition(environmentPrecondition('environment', this.defaultEnvironmentController, requireEnvironmentWithAppIdOverride));
     }
     contextOption() {
         const supportedProductsService = this.supportedProductsService;
         return this.option('-s, --site [site]', cli_shared_1.Text.optionSite)
@@ -464,9 +474,8 @@
     }
     const options = getOptionsData(cmd);
     return { commands, options };
 }
-exports.getAutocompleteConfig = getAutocompleteConfig;
 function validateContext({ supportedProductsService, site, product }) {
     let maybeSupportedProduct = undefined;
     let maybeSiteUrl = undefined;
     if (product !== undefined) {
@@ -482,9 +491,8 @@
         maybeSiteUrl = supportedProductsService.validateSite(site, maybeSupportedProduct);
     }
     return { site: maybeSiteUrl, product: maybeSupportedProduct };
 }
-exports.validateContext = validateContext;
 function validateShardContext(shard) {
     if (shard) {
         const [id, region, ...rest] = shard.split(':');
         if (!id || !region || rest.length > 0) {
@@ -493,16 +501,21 @@
         return shard;
     }
     return undefined;
 }
-exports.validateShardContext = validateShardContext;
-function environmentPrecondition(key, environmentController) {
+function environmentPrecondition(key, environmentController, requireEnvironmentWithAppIdOverride = false) {
     return async (...args) => {
         const lastArgs = last(args);
         const environmentArg = lastArgs[key];
         const nonInteractive = lastArgs.nonInteractive ?? false;
-        const environment = environmentArg || (await environmentController.run(nonInteractive));
+        const appId = lastArgs.appId || lastArgs.appIdOverride;
+        if (!environmentArg && lastArgs.appIdOverride) {
+            if (requireEnvironmentWithAppIdOverride) {
+                throw new cli_shared_1.ValidationError(cli_shared_1.Text.appIdOverride.environmentRequired);
+            }
+            return {};
+        }
+        const environment = environmentArg || (await environmentController.run(nonInteractive, appId));
         return { [key]: (0, environment_1.checkEnvironmentOption)(environment) };
     };
 }
-exports.environmentPrecondition = environmentPrecondition;
 //# sourceMappingURL=command.js.map
\ No newline at end of file