@forge/cli

13.0.013.1.0-next.4-experimental-9423de1
out/command-line/register-app-commands.js
~out/command-line/register-app-commands.jsModified
+65−55
Index: package/out/command-line/register-app-commands.js
===================================================================
--- package/out/command-line/register-app-commands.js
+++ package/out/command-line/register-app-commands.js
@@ -10,9 +10,8 @@
 const tslib_1 = require("tslib");
 const fs_1 = tslib_1.__importDefault(require("fs"));
 const sanitize_filename_1 = tslib_1.__importDefault(require("sanitize-filename"));
 const cli_shared_1 = require("@forge/cli-shared");
-const cli_shared_2 = require("@forge/cli-shared");
 var TemplateCategory;
 (function (TemplateCategory) {
     TemplateCategory["SHOW_ALL"] = "Show All";
     TemplateCategory["ROVO"] = "Rovo Agent and action";
@@ -35,9 +34,8 @@
     TemplateContext["TEAMWORK_GRAPH"] = "teamwork-graph";
     TemplateContext["ROVO"] = "rovo";
     TemplateContext["CROSS_CONTEXT"] = "cross-context";
 })(TemplateContext || (exports.TemplateContext = TemplateContext = {}));
-const GLOBAL_TEMPLATE_NAME = 'global-ui-ui-kit';
 const PRODUCT_OPTIONS = {
     [TemplateContext.SHOW_ALL]: [TemplateContext.SHOW_ALL],
     [TemplateContext.GLOBAL]: [TemplateContext.GLOBAL],
     [TemplateContext.AUTOMATION]: [TemplateContext.AUTOMATION],
@@ -84,14 +82,14 @@
             .join(' '));
 }
 function ensureDirectoryDoesntExist(directory) {
     if (fs_1.default.existsSync(directory)) {
-        throw new cli_shared_2.ValidationError(cli_shared_2.Text.create.error.directory.exists(directory));
+        throw new cli_shared_1.ValidationError(cli_shared_1.Text.create.error.directory.exists(directory));
     }
 }
 function ensureValidNameLength(name) {
     if (name.length <= 0 || name.length > MAX_NAME_LENGTH) {
-        throw new cli_shared_2.ValidationError(cli_shared_2.Text.create.error.name.tooLong(MAX_NAME_LENGTH));
+        throw new cli_shared_1.ValidationError(cli_shared_1.Text.create.error.name.tooLong(MAX_NAME_LENGTH));
     }
 }
 async function selectedTemplate(filteredTemplates, ui, categoryPredicates = exports.CATEGORY_PREDICATES) {
     const categoryMap = filteredTemplates.reduce((map, template) => {
@@ -107,15 +105,15 @@
     if (categoryMap.size) {
         const sortedCategories = categoryPredicates
             .filter(([category]) => categoryMap.has(category))
             .map(([category]) => category);
-        const category = await ui.promptForList(cli_shared_2.Text.create.promptCategory, sortedCategories);
+        const category = await ui.promptForList(cli_shared_1.Text.create.promptCategory, sortedCategories);
         const categoryFilteredTemplates = filterTemplatesByCategory(categoryMap.get(category) ?? filteredTemplates, category);
-        const template = await ui.promptForList(cli_shared_2.Text.create.promptTemplate, categoryFilteredTemplates);
+        const template = await ui.promptForList(cli_shared_1.Text.create.promptTemplate, categoryFilteredTemplates);
         return { name: modifyTemplateByCategory(template, category), analytics: { category } };
     }
     else {
-        const templateName = await ui.promptForList(cli_shared_2.Text.create.promptTemplate, filteredTemplates);
+        const templateName = await ui.promptForList(cli_shared_1.Text.create.promptTemplate, filteredTemplates);
         return {
             name: templateName,
             analytics: { category: undefined }
         };
@@ -144,39 +142,39 @@
     if (skipPrompt) {
         return true;
     }
     ui.emptyLine();
-    ui.info(cli_shared_2.Text.devSpace.terms.agreement);
-    ui.info(cli_shared_2.Text.devSpace.terms.checkbox);
+    ui.info(cli_shared_1.Text.devSpace.terms.agreement);
+    ui.info(cli_shared_1.Text.devSpace.terms.checkbox);
     ui.emptyLine();
-    ui.info(cli_shared_2.Text.devSpace.terms.links.devTerms);
-    ui.info(cli_shared_2.Text.devSpace.terms.links.privacy);
-    ui.info(cli_shared_2.Text.devSpace.terms.links.pricing);
+    ui.info(cli_shared_1.Text.devSpace.terms.links.devTerms);
+    ui.info(cli_shared_1.Text.devSpace.terms.links.privacy);
+    ui.info(cli_shared_1.Text.devSpace.terms.links.pricing);
     ui.emptyLine();
-    const accepted = await ui.confirm(cli_shared_2.Text.devSpace.terms.acceptPrompt);
+    const accepted = await ui.confirm(cli_shared_1.Text.devSpace.terms.acceptPrompt);
     if (!accepted) {
-        throw new cli_shared_2.ValidationError(cli_shared_2.Text.devSpace.terms.notAcceptedError);
+        throw new cli_shared_1.ValidationError(cli_shared_1.Text.devSpace.terms.notAcceptedError);
     }
     return true;
 }
 async function handleDevSpaceSelection(ui, devSpaceService, developerSpaceId, commandContext) {
     let isNewlyCreatedDevSpace = false;
     let selectedDevSpace;
     ui.emptyLine();
-    ui.info(cli_shared_2.Text.ctrlC);
+    ui.info(cli_shared_1.Text.ctrlC);
     ui.emptyLine();
     const devSpaces = await devSpaceService.getDevSpaces(ui);
     if (developerSpaceId) {
         selectedDevSpace = devSpaces.find((ds) => ds.id === developerSpaceId);
         if (!selectedDevSpace) {
-            throw new cli_shared_2.ValidationError(cli_shared_2.Text.devSpace.invalidSpaceName(developerSpaceId));
+            throw new cli_shared_1.ValidationError(cli_shared_1.Text.devSpace.invalidSpaceName(developerSpaceId));
         }
     }
     else {
         if (commandContext === 'register' && devSpaces.length) {
-            ui.info(cli_shared_2.Text.devSpace.assignmentInfo);
+            ui.info(cli_shared_1.Text.devSpace.assignmentInfo);
             ui.emptyLine();
-            ui.info(cli_shared_2.Text.devSpace.selectionPrompt(cli_shared_2.Text.devSpace.documentationLink));
+            ui.info(cli_shared_1.Text.devSpace.selectionPrompt(cli_shared_1.Text.devSpace.documentationLink));
             ui.emptyLine();
         }
         const devSpaceResult = await devSpaceService.selectDevSpace(ui, devSpaces, commandContext);
         if (!devSpaceResult) {
@@ -187,10 +185,10 @@
         selectedDevSpace = devSpaceResult.devSpace;
     }
     if (!isNewlyCreatedDevSpace && selectedDevSpace) {
         const messageText = commandContext === 'create'
-            ? cli_shared_2.Text.devSpace.contributingToSpace(selectedDevSpace.name)
-            : cli_shared_2.Text.devSpace.assigningToSpace(selectedDevSpace.name);
+            ? cli_shared_1.Text.devSpace.contributingToSpace(selectedDevSpace.name)
+            : cli_shared_1.Text.devSpace.assigningToSpace(selectedDevSpace.name);
         ui.info(messageText);
     }
     ui.clearSpinner();
     return {
@@ -199,9 +197,9 @@
     };
 }
 async function createCommandHandler(ui, createAppCommand, name, { template, directory, developerSpaceId, acceptTerms }, devSpaceService, isDevSpaceSelectionEnabled, analyticsClientReporter) {
     if (isDevSpaceSelectionEnabled && developerSpaceId && !(0, exports.isValidDevSpaceId)(developerSpaceId)) {
-        throw new cli_shared_2.ValidationError(cli_shared_2.Text.devSpace.invalidSpaceId(developerSpaceId));
+        throw new cli_shared_1.ValidationError(cli_shared_1.Text.devSpace.invalidSpaceId(developerSpaceId));
     }
     const devSpaceResult = isDevSpaceSelectionEnabled
         ? await handleDevSpaceSelection(ui, devSpaceService, developerSpaceId, 'create')
         : null;
@@ -213,15 +211,15 @@
         isNewlyCreatedDevSpace: false
     };
     directory = prepareDirectoryForApp(ui, name, template, directory);
     if (!isDevSpaceSelectionEnabled) {
-        ui.info(cli_shared_2.Text.ctrlC);
+        ui.info(cli_shared_1.Text.ctrlC);
     }
     ({ name, directory } = await promptAndValidateAppName(ui, name, directory, template, isDevSpaceSelectionEnabled, isNewlyCreatedDevSpace));
     let billingConsent = false;
     if (isDevSpaceSelectionEnabled) {
         billingConsent = await promptAndAcceptTerms(ui, acceptTerms);
-        ui.info(cli_shared_2.Text.devSpace.terms.accepted('creation'));
+        ui.info(cli_shared_1.Text.devSpace.terms.accepted('creation'));
     }
     const selection = await promptAndSelectTemplate(ui, createAppCommand, template, directory);
     template = selection.template;
     ui.emptyLine();
@@ -234,35 +232,35 @@
         ...(selection.installationTarget && { installationTarget: selection.installationTarget }),
         ...(selectedDevSpace?.id && { developerSpaceId: selectedDevSpace?.id }),
         billingConsent
     };
-    const result = await ui.displayProgress(() => createAppCommand.execute(args), cli_shared_2.Text.create.cmd.start, cli_shared_2.Text.create.cmd.success(name));
+    const result = await ui.displayProgress(() => createAppCommand.execute(args), cli_shared_1.Text.create.cmd.start, cli_shared_1.Text.create.cmd.success(name));
     await analyticsClientReporter.reportCreationSurvey({
         ...result.analytics,
         ...selection.analytics
     });
-    ui.info(cli_shared_2.Text.create.cmd.successDetails(directory, result.environments));
+    ui.info(cli_shared_1.Text.create.cmd.successDetails(directory, result.environments));
     return result;
 }
 function prepareDirectoryForApp(ui, name, template, directory) {
     if (directory) {
         ensureDirectoryDoesntExist(directory);
-        ui.info(cli_shared_2.Text.create.intro(directory));
+        ui.info(cli_shared_1.Text.create.intro(directory));
     }
     else {
         directory = directoryNameFromAppName(name) || template;
         if (directory) {
             ensureDirectoryDoesntExist(directory);
         }
         const currentDirectory = process.cwd();
-        ui.info(cli_shared_2.Text.create.introWithCurrentDirectory(currentDirectory));
+        ui.info(cli_shared_1.Text.create.introWithCurrentDirectory(currentDirectory));
     }
     return directory;
 }
 async function promptAndValidateAppName(ui, name, directory, template, isDevSpaceSelectionEnabled, isNewlyCreatedDevSpace) {
     if (!name) {
-        ui.info(cli_shared_2.Text.create.overviewAppName);
-        name = await ui.promptForText(cli_shared_2.Text.create.promptName);
+        ui.info(cli_shared_1.Text.create.overviewAppName);
+        name = await ui.promptForText(cli_shared_1.Text.create.promptName);
         if (!directory) {
             directory = directoryNameFromAppName(name) || template;
             if (directory) {
                 ensureDirectoryDoesntExist(directory);
@@ -271,34 +269,46 @@
     }
     ensureValidNameLength(name);
     return { name, directory };
 }
-const handleGlobalTemplateSelection = (ui, directory) => {
-    ui.info(cli_shared_2.Text.create.globalTemplateSelection);
+const handleGlobalTemplateSelection = async (ui, directory) => {
+    ui.info(cli_shared_1.Text.create.globalTemplateSelection);
+    const globalTemplates = ['global-ui', 'global-ui-typescript'];
+    const selectedTemplate = await ui.promptForList('Choose a global template:', globalTemplates, {
+        format: (template) => {
+            switch (template) {
+                case 'global-ui':
+                    return 'global-ui';
+                case 'global-ui-typescript':
+                    return 'global-ui-typescript';
+                default:
+                    return template;
+            }
+        }
+    });
     if (!directory) {
-        directory = GLOBAL_TEMPLATE_NAME;
+        directory = selectedTemplate;
         ensureDirectoryDoesntExist(directory);
     }
     return {
-        template: GLOBAL_TEMPLATE_NAME,
-        installationTarget: cli_shared_1.InstallationTarget.Unit,
+        template: selectedTemplate,
         analytics: {
             category: TemplateCategory.UI_KIT_2,
             product: TemplateContext.GLOBAL
         }
     };
 };
 async function promptAndSelectTemplate(ui, createAppCommand, template, directory) {
     if (!template) {
-        ui.info(cli_shared_2.Text.create.overviewTemplates);
-        const templates = await ui.displayTemporaryMessage(() => createAppCommand.getAvailableTemplates(), cli_shared_2.Text.create.waitTemplates);
+        ui.info(cli_shared_1.Text.create.overviewTemplates);
+        const templates = await ui.displayTemporaryMessage(() => createAppCommand.getAvailableTemplates(), cli_shared_1.Text.create.waitTemplates);
         const templatesWithoutCsuik = templates.filter((template) => !template.includes('csuik'));
         const productOptions = await createAppCommand.filterAvailableProducts(Object.values(TemplateContext), TemplateContext.TEAMWORK_GRAPH, TemplateContext.CROSS_CONTEXT);
-        const productName = await ui.promptForList(cli_shared_2.Text.create.promptProduct, productOptions, {
+        const productName = await ui.promptForList(cli_shared_1.Text.create.promptProduct, productOptions, {
             format: formatProduct
         }, productOptions.length);
         if (productName === TemplateContext.GLOBAL) {
-            return handleGlobalTemplateSelection(ui, directory);
+            return await handleGlobalTemplateSelection(ui, directory);
         }
         const filteredTemplates = (PRODUCT_OPTIONS[productName] ?? [productName])
             .map((p) => filterTemplatesByProduct(templatesWithoutCsuik, p, productOptions))
             .flat();
@@ -352,32 +362,32 @@
     const { cmd, analyticsClientReporter, ui, commands: { createAppCommand }, services: { devSpaceService, statsigService } } = deps;
     const isDevSpaceSelectionEnabled = await statsigService.isDevSpaceSelectionEnabled();
     const createCommand = cmd
         .command('create [name]')
-        .description(cli_shared_2.Text.create.cmd.desc)
-        .option('-t, --template <template name>', cli_shared_2.Text.create.optionTemplate)
-        .option('-d, --directory <directory name>', cli_shared_2.Text.create.optionDirectory);
+        .description(cli_shared_1.Text.create.cmd.desc)
+        .option('-t, --template <template name>', cli_shared_1.Text.create.optionTemplate)
+        .option('-d, --directory <directory name>', cli_shared_1.Text.create.optionDirectory);
     if (isDevSpaceSelectionEnabled) {
-        createCommand.option('-s, --developer-space-id <Developer Space id>', cli_shared_2.Text.create.optionSpace);
-        createCommand.option('-y, --accept-terms', cli_shared_2.Text.create.optionAcceptTerms);
+        createCommand.option('-s, --developer-space-id <Developer Space id>', cli_shared_1.Text.create.optionSpace);
+        createCommand.option('-y, --accept-terms', cli_shared_1.Text.create.optionAcceptTerms);
     }
     createCommand.action((name, options) => {
         return createCommandHandler(ui, createAppCommand, name, options, devSpaceService, isDevSpaceSelectionEnabled, analyticsClientReporter);
     });
 }
 async function registerRegisterCommand({ cmd, ui, commands: { registerAppCommand }, services: { devSpaceService, statsigService } }) {
     const isDevSpaceSelectionEnabled = await statsigService.isDevSpaceSelectionEnabled();
-    const registerCommand = cmd.command('register [name]').description(cli_shared_2.Text.register.cmd.desc);
+    const registerCommand = cmd.command('register [name]').description(cli_shared_1.Text.register.cmd.desc);
     if (isDevSpaceSelectionEnabled) {
-        registerCommand.option('-s, --developer-space-id <Developer Space id>', cli_shared_2.Text.create.optionSpace);
-        registerCommand.option('-y, --accept-terms', cli_shared_2.Text.create.optionAcceptTerms);
+        registerCommand.option('-s, --developer-space-id <Developer Space id>', cli_shared_1.Text.create.optionSpace);
+        registerCommand.option('-y, --accept-terms', cli_shared_1.Text.create.optionAcceptTerms);
     }
     registerCommand
         .requireManifestFile()
         .action(async (name, options) => {
         const { developerSpaceId, acceptTerms } = options;
         if (isDevSpaceSelectionEnabled && developerSpaceId && !(0, exports.isValidDevSpaceId)(developerSpaceId)) {
-            throw new cli_shared_2.ValidationError(cli_shared_2.Text.devSpace.invalidSpaceId(developerSpaceId));
+            throw new cli_shared_1.ValidationError(cli_shared_1.Text.devSpace.invalidSpaceId(developerSpaceId));
         }
         const devSpaceResult = isDevSpaceSelectionEnabled
             ? await handleDevSpaceSelection(ui, devSpaceService, developerSpaceId, 'register')
             : null;
@@ -387,33 +397,33 @@
         const { selectedDevSpace } = devSpaceResult || {
             selectedDevSpace: undefined
         };
         if (isDevSpaceSelectionEnabled) {
-            ui.info(cli_shared_2.Text.register.intro);
+            ui.info(cli_shared_1.Text.register.intro);
         }
         else {
-            ui.info(cli_shared_2.Text.register.intro);
-            ui.info(cli_shared_2.Text.ctrlC);
+            ui.info(cli_shared_1.Text.register.intro);
+            ui.info(cli_shared_1.Text.ctrlC);
             ui.emptyLine();
         }
         if (!name) {
-            ui.info(cli_shared_2.Text.create.overviewAppName);
-            name = await ui.promptForText(cli_shared_2.Text.create.promptName);
+            ui.info(cli_shared_1.Text.create.overviewAppName);
+            name = await ui.promptForText(cli_shared_1.Text.create.promptName);
             ui.emptyLine();
         }
         let billingConsent = false;
         if (isDevSpaceSelectionEnabled) {
             billingConsent = await promptAndAcceptTerms(ui, acceptTerms);
-            ui.info(cli_shared_2.Text.devSpace.terms.accepted('registration'));
+            ui.info(cli_shared_1.Text.devSpace.terms.accepted('registration'));
             ui.emptyLine();
         }
         const executeArgs = {
             name,
             ...(selectedDevSpace?.id && { developerSpaceId: selectedDevSpace?.id }),
             billingConsent
         };
-        const result = await ui.displayProgress(() => registerAppCommand.execute(executeArgs), cli_shared_2.Text.register.cmd.start, cli_shared_2.Text.register.cmd.success(name));
-        ui.info(cli_shared_2.Text.register.cmd.successDetails(result.environments));
+        const result = await ui.displayProgress(() => registerAppCommand.execute(executeArgs), cli_shared_1.Text.register.cmd.start, cli_shared_1.Text.register.cmd.success(name));
+        ui.info(cli_shared_1.Text.register.cmd.successDetails(result.environments));
         return result;
     });
 }
 async function registerCommands(deps) {