@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) {