@mondaycom/apps-cli
Version:
A cli tool to manage apps (and monday-code projects) in monday.com
57 lines (56 loc) • 2.61 kB
JavaScript
import { Flags } from '@oclif/core';
import { StatusCodes } from 'http-status-codes';
import Status from '../code/status.js';
import { AuthenticatedCommand } from '../../commands-base/authenticated-command.js';
import { APP_VERSION_ID_TO_ENTER } from '../../consts/messages.js';
import { listAppBuilds } from '../../services/app-builds-service.js';
import { DynamicChoicesService } from '../../services/dynamic-choices-service.js';
import { HttpError } from '../../types/errors/index.js';
import logger from '../../utils/logger.js';
const printBuilds = (appBuilds) => {
const appBuildsTable = appBuilds.map(appBuild => {
return {
category: appBuild.category,
...(appBuild.data?.liveUrl && { 'live url': appBuild.data?.liveUrl }),
...(appBuild.data?.url && { url: appBuild.data?.url }),
...(appBuild.data?.latestUrl && { 'static url (latest deployment)': appBuild.data?.latestUrl }),
...(appBuild.data?.sourceUrl && { 'source url (download)': appBuild.data?.sourceUrl }),
...(appBuild.data?.microFrontendName && { 'micro frontend name': appBuild.data?.microFrontendName }),
};
});
logger.table(appBuildsTable);
};
export default class AppVersionBuilds extends AuthenticatedCommand {
static description = 'List all builds for a specific app version';
static examples = ['<%= config.bin %> <%= command.id %> -i APP_VERSION_ID'];
static flags = AppVersionBuilds.serializeFlags({
appVersionId: Flags.integer({
char: 'i',
aliases: ['v'],
description: APP_VERSION_ID_TO_ENTER,
}),
});
DEBUG_TAG = 'app_version_builds';
async run() {
const { flags } = await this.parse(Status);
let appVersionId = flags.appVersionId;
if (!appVersionId) {
const appAndAppVersion = await DynamicChoicesService.chooseAppAndAppVersion(true, true);
appVersionId = appAndAppVersion.appVersionId;
}
try {
this.preparePrintCommand(this, { appVersionId });
const appReleases = await listAppBuilds(appVersionId);
printBuilds(appReleases);
}
catch (error) {
if (error instanceof HttpError && error.code === StatusCodes.NOT_FOUND) {
logger.error(`No builds found for provided app version id - "${appVersionId}"`);
}
else {
logger.error(`An unknown error happened while fetching builds for app version id - "${appVersionId}"`);
}
process.exit(0);
}
}
}