@forge/cli
12.2.0-next.5-experimental-255e23212.2.0-next.16
out/command-line/register-show-commands.js+
out/command-line/register-show-commands.jsNew file+141
Index: package/out/command-line/register-show-commands.js
===================================================================
--- package/out/command-line/register-show-commands.js
+++ package/out/command-line/register-show-commands.js
@@ -0,0 +1,141 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.registerCommands = void 0;
+const cli_shared_1 = require("@forge/cli-shared");
+function readServicesFromConfig(manifest) {
+ if (!manifest || !manifest.services) {
+ return [];
+ }
+ return manifest.services.map((service) => service.key);
+}
+class ShowCommandError extends Error {
+}
+function showCommandError(ui, message) {
+ ui.error(new ShowCommandError(message));
+ ui.emptyLine();
+}
+function specifiedContainerExists(allServiceContainers, containerKey) {
+ return !allServiceContainers.some((ct) => ct.key === containerKey && ct.instances && ct.instances.length > 0);
+}
+const SHOW_SERVICES_COMMAND_NAME = 'services';
+const registerShowServiceCommand = (parent, { ui, commands: { containerCommand }, configFile }) => {
+ parent
+ .command(SHOW_SERVICES_COMMAND_NAME)
+ .description(cli_shared_1.Text.show.services.cmd.desc)
+ .environmentOption()
+ .option('-s, --service [service]', cli_shared_1.Text.show.services.cmd.serviceKeyOption)
+ .requireAppId()
+ .action(async ({ service, environment }) => {
+ ui.info(cli_shared_1.Text.show.services.overview);
+ environment = (0, cli_shared_1.environmentToOption)(environment);
+ const serviceNames = service ? [service] : readServicesFromConfig(await configFile.readConfig());
+ const { services } = await containerCommand.getContainerServiceDetails(environment, serviceNames);
+ if (!services || !services.length) {
+ showCommandError(ui, cli_shared_1.Text.show.services.noServicesFound(environment));
+ return;
+ }
+ const headings = [
+ ['service', 'Service'],
+ ['serviceStatus', 'Service Status'],
+ ['versionStatus', 'Version Status'],
+ ['runningCount', 'Running Count'],
+ ['pendingCount', 'Pending Count'],
+ ['maxCount', 'Max Count'],
+ ['minCount', 'Min Count'],
+ ['createdAt', 'Created at'],
+ ['updatedAt', 'Updated at']
+ ];
+ if (service) {
+ headings.shift();
+ }
+ ui.emptyLine();
+ ui.table(headings, services.map((s) => ({
+ service: s.key,
+ serviceStatus: s.serviceStatus,
+ versionStatus: s.versionStatus,
+ runningCount: s.runningCount,
+ pendingCount: s.pendingCount,
+ maxCount: s.maxCount,
+ minCount: s.minCount,
+ createdAt: s.createdAt,
+ updatedAt: s.updatedAt
+ })), {
+ preMessage: service
+ ? cli_shared_1.Text.show.services.specificService(service, environment)
+ : cli_shared_1.Text.show.services.allServices(environment)
+ });
+ ui.emptyLine();
+ });
+};
+const SHOW_CONTAINERS_COMMAND_NAME = 'containers';
+const registerShowContainerCommand = (parent, { ui, commands: { containerCommand }, configFile }) => {
+ parent
+ .command(SHOW_CONTAINERS_COMMAND_NAME)
+ .description(cli_shared_1.Text.show.containers.cmd.desc)
+ .option('-s, --service <service>', cli_shared_1.Text.show.containers.cmd.serviceKeyOption)
+ .option('-c, --container [container]', cli_shared_1.Text.show.containers.cmd.containerKeyOption)
+ .environmentOption()
+ .requireAppId()
+ .action(async ({ environment, service, container }) => {
+ ui.info(cli_shared_1.Text.show.containers.overview);
+ environment = (0, cli_shared_1.environmentToOption)(environment);
+ if (!service) {
+ ui.emptyLine();
+ const serviceNames = readServicesFromConfig(await configFile.readConfig());
+ service = await ui.promptForList(cli_shared_1.Text.show.containers.prompt.entry, serviceNames);
+ ui.emptyLine();
+ }
+ const { services } = await containerCommand.getContainerServiceDetails(environment, [service]);
+ if (!services || !services.length) {
+ showCommandError(ui, cli_shared_1.Text.show.containers.noContainersFound(environment));
+ return;
+ }
+ const specifiedService = services.find((s) => s.key === service);
+ if (!specifiedService) {
+ showCommandError(ui, cli_shared_1.Text.show.containers.specifiedServiceNotFound(service, environment));
+ return;
+ }
+ if (!specifiedService.containers || !specifiedService.containers.length) {
+ showCommandError(ui, cli_shared_1.Text.show.containers.noContainersFoundForService(service, environment));
+ return;
+ }
+ let containers = specifiedService.containers;
+ if (container) {
+ if (!specifiedContainerExists(containers, container)) {
+ showCommandError(ui, cli_shared_1.Text.show.containers.specifiedContainerNotFound(service, container, environment));
+ return;
+ }
+ containers = specifiedService.containers.filter((ct) => ct.key === container);
+ }
+ for (const ct of containers) {
+ if (!ct.instances || !ct.instances.length) {
+ ui.info(cli_shared_1.Text.show.containers.noInstancesFoundForContainer(ct.key, service, environment));
+ ui.emptyLine();
+ continue;
+ }
+ ui.emptyLine();
+ ui.table([
+ ['id', 'ID'],
+ ['health', 'Health'],
+ ['status', 'Status'],
+ ['imageURI', 'ImageURI'],
+ ['createdAt', 'Created at']
+ ], ct.instances.map((c) => ({
+ id: c.id,
+ health: c.healthStatus,
+ status: c.containerStatus,
+ imageURI: c.imageURI,
+ createdAt: c.createdAt
+ })), { preMessage: cli_shared_1.Text.show.containers.specificContainer(ct.key) });
+ ui.emptyLine();
+ }
+ });
+};
+const SHOW_COMMAND_NAME = 'show';
+const registerCommands = (deps) => {
+ const containersCmd = deps.cmd.command(SHOW_COMMAND_NAME, { hidden: true }).description(cli_shared_1.Text.show.cmd.desc);
+ registerShowServiceCommand(containersCmd, deps);
+ registerShowContainerCommand(containersCmd, deps);
+};
+exports.registerCommands = registerCommands;
+//# sourceMappingURL=register-show-commands.js.map
\ No newline at end of file