@forge/cli

12.11.012.12.0-next.9
out/command-line/register-environments-commands.js
out/command-line/register-environments-commands.js
+48−25
Index: package/out/command-line/register-environments-commands.js
===================================================================
--- package/out/command-line/register-environments-commands.js
+++ package/out/command-line/register-environments-commands.js
@@ -20,36 +20,58 @@
     ui.emptyLine();
     ui.info(cli_shared_1.Text.createEnvironment.successMessage);
 };
 exports.createEnvironmentHandler = createEnvironmentHandler;
-const listEnvironmentHandler = async (ui, listEnvironmentCommand) => {
+const listEnvironmentHandler = async (ui, listEnvironmentCommand, options = {}) => {
     const envOrder = {
         PRODUCTION: 1,
         STAGING: 2,
         DEVELOPMENT: 3
     };
-    const environments = (await listEnvironmentCommand.execute()).sort((a, b) => a.type === b.type ? Number(a.lastDeployedAt) - Number(b.lastDeployedAt) : envOrder[a.type] - envOrder[b.type]);
-    ui.table([
-        ['id', 'Environment ID'],
-        ['type', 'Type'],
-        ['name', 'Name'],
-        ['lastDeployedAt', 'Last deployed at']
-    ], environments.map(({ id, type, key, lastDeployedAt }) => {
-        return {
-            id,
-            type,
-            name: (0, cli_shared_1.environmentToOption)(key),
-            lastDeployedAt
-        };
-    }), {
-        preMessage: cli_shared_1.Text.listEnvironment.overview,
-        format: {
-            lastDeployedAt: (value) => new Date(Number(value)).toISOString()
-        },
-        groupRows: {
-            type: true
+    const displayEnvironments = (environments) => {
+        const sortedEnvironments = environments.sort((a, b) => a.type === b.type ? Number(a.lastDeployedAt) - Number(b.lastDeployedAt) : envOrder[a.type] - envOrder[b.type]);
+        ui.table([
+            ['id', 'Environment ID'],
+            ['type', 'Type'],
+            ['name', 'Name'],
+            ['lastDeployedAt', 'Last deployed at']
+        ], sortedEnvironments.map(({ id, type, key, lastDeployedAt }) => {
+            return {
+                id,
+                type,
+                name: (0, cli_shared_1.environmentToOption)(key),
+                lastDeployedAt
+            };
+        }), {
+            format: {
+                lastDeployedAt: (value) => new Date(Number(value)).toISOString()
+            },
+            groupRows: {
+                type: true
+            }
+        });
+    };
+    ui.info(cli_shared_1.Text.listEnvironment.overview);
+    if (options.nonInteractive) {
+        ui.emptyLine();
+        const environments = await ui.displayProgress(() => listEnvironmentCommand.fetchAll(), cli_shared_1.Text.listEnvironment.start, cli_shared_1.Text.listEnvironment.success);
+        displayEnvironments(environments);
+        return;
+    }
+    ui.info(cli_shared_1.Text.ctrlC);
+    ui.emptyLine();
+    let cursor;
+    do {
+        const { environments, hasPreviousPage, startCursor } = await ui.displayProgress(() => listEnvironmentCommand.fetchPage(cursor), cli_shared_1.Text.listEnvironment.start, cli_shared_1.Text.listEnvironment.success);
+        displayEnvironments(environments);
+        cursor = hasPreviousPage ? startCursor : undefined;
+        if (cursor) {
+            ui.emptyLine();
+            if (!(await ui.confirm(cli_shared_1.Text.listEnvironment.promptNextPage))) {
+                cursor = undefined;
+            }
         }
-    });
+    } while (cursor);
 };
 exports.listEnvironmentHandler = listEnvironmentHandler;
 const deleteEnvironmentHandler = async (ui, options, listEnvironmentCommand, deleteEnvironmentCommand) => {
     let confirmDeleteEnvironments = false;
@@ -77,9 +99,9 @@
     displayDeleteResult(ui, deletedEnvironments, successful);
 };
 exports.deleteEnvironmentHandler = deleteEnvironmentHandler;
 const getEnvironmentKeysToDelete = async (ui, listEnvironmentCommand) => {
-    const environments = (await listEnvironmentCommand.execute())
+    const environments = (await ui.displayProgress(() => listEnvironmentCommand.fetchAll(), cli_shared_1.Text.listEnvironment.start, cli_shared_1.Text.listEnvironment.success))
         .filter((env) => env.type === cli_shared_1.AppEnvironmentType.Development && env.key !== cli_shared_1.DEFAULT_ENVIRONMENT_KEY)
         .sort((a, b) => Number(a.lastDeployedAt) - Number(b.lastDeployedAt));
     if (environments.length === 0) {
         ui.info(cli_shared_1.Text.deleteEnvironment.noEnvironmentMessage);
@@ -152,10 +174,11 @@
     parent
         .command('list')
         .requireAppId()
         .description(cli_shared_1.Text.listEnvironment.cmd.desc)
-        .action(async () => {
-        await (0, exports.listEnvironmentHandler)(ui, listEnvironmentCommand);
+        .nonInteractiveOption()
+        .action(async (options) => {
+        await (0, exports.listEnvironmentHandler)(ui, listEnvironmentCommand, options);
     });
 };
 const registerDeleteEnvironmentsCommand = (parent, { ui, commands: { listEnvironmentCommand, deleteEnvironmentCommand } }) => {
     parent