@forge/cli

13.4.0-next.3-experimental-f258a6d13.4.0-next.5-experimental-016ed9d
out/command-line/register-installation-commands.js
~out/command-line/register-installation-commands.jsModified
+17−4
Index: package/out/command-line/register-installation-commands.js
===================================================================
--- package/out/command-line/register-installation-commands.js
+++ package/out/command-line/register-installation-commands.js
@@ -7,26 +7,39 @@
 const shared_1 = require("../installations/shared");
 const uninstall_command_helpers_1 = require("./uninstall-command-helpers");
 const semver_1 = require("semver");
 const installation_helper_1 = require("../installations/installation-helper");
+const url_1 = require("url");
 const COMMAND_NAME = 'install';
-const registerInstallAppCommand = ({ cmd, controllers: { installController } }) => {
+const registerInstallAppCommand = ({ cmd, controllers: { installController }, services: { siteService } }) => {
     cmd
         .requireAppId(true)
         .environmentOption(true)
         .contextOption()
+        .option('-d, --demo-site', cli_shared_1.Text.install.optionDemoSite)
         .option('--upgrade [target]', cli_shared_1.Text.install.optionUpgrade)
         .option('--confirm-scopes', cli_shared_1.Text.install.optionConfirmScopes, false)
         .option('-l, --license [license]', cli_shared_1.Text.install.optionLicense)
         .option('--license-modes [licenseModes...]', cli_shared_1.Text.install.optionLicenseModes)
         .option('--users-with-access [user...]', cli_shared_1.Text.install.optionUsersWithAccess)
         .option('--major-version <majorVersion>', cli_shared_1.Text.install.optionMajorVersion)
-        .nonInteractiveOption('--site', '--product', '--environment')
+        .nonInteractiveOption(['--site', '--demo-site'], '--product', '--environment')
         .description(cli_shared_1.Text.install.cmd.description)
-        .action(async ({ environment, site, product, upgrade, confirmScopes, license, licenseModes, usersWithAccess, nonInteractive, majorVersion, appIdOverride }) => {
+        .action(async ({ environment, site, product, upgrade, confirmScopes, license, licenseModes, usersWithAccess, nonInteractive, majorVersion, demoSite, appIdOverride }) => {
+        let installSite = site;
+        if (demoSite) {
+            if (site) {
+                throw new cli_shared_1.UserError(cli_shared_1.Text.install.error.demoSiteWithSite);
+            }
+            const existingDemoSite = await siteService.getExistingSite();
+            if (!existingDemoSite?.siteUrl) {
+                throw new cli_shared_1.UserError(cli_shared_1.Text.install.error.noDemoSite);
+            }
+            installSite = new url_1.URL(existingDemoSite.siteUrl);
+        }
         await installController.run({
             environment,
-            site,
+            site: installSite,
             products: product ? [product] : [],
             upgrade,
             confirmScopes,
             license,