Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/master'
Browse files Browse the repository at this point in the history
  • Loading branch information
Tsemach Lifshitz committed Jun 18, 2024
2 parents 9a034ef + f6ec128 commit c6d4a71
Show file tree
Hide file tree
Showing 28 changed files with 440 additions and 147 deletions.
27 changes: 27 additions & 0 deletions .github/workflows/npm-publish-beta.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
name: Node.js Package [beta]

on: [push]

jobs:
publish-npm:
runs-on: ubuntu-latest
if: contains(github.event.head_commit.message, '[beta]')
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: "18.12.x"
registry-url: https://registry.npmjs.org/
- run: yarn prepublish-and-build
- name: Validate version contains beta
run: |
version=$(jq -r .version package.json)
echo $version | grep -q "\-beta"
- run: npm publish --tag beta
env:
NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}}
- uses: "marvinpinto/action-automatic-releases@latest"
with:
repo_token: "${{ secrets.GITHUB_TOKEN }}"
prerelease: false
automatic_release_tag: latest
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@mondaycom/apps-cli",
"version": "2.6.0",
"version": "2.6.1",
"description": "A cli tool to manage apps (and monday-code projects) in monday.com",
"author": "monday.com Apps Team",
"type": "module",
Expand Down
2 changes: 1 addition & 1 deletion src/commands-base/base-command.ts
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ export abstract class BaseCommand extends Command {
} as typeof flags & typeof this.sharedFlags;
}

static sharedFlags? = {
static sharedFlags = {
verbose: Flags.boolean({
description: 'Print advanced logs (optional).',
default: false,
Expand Down
68 changes: 41 additions & 27 deletions src/commands/app/deploy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import { getManifestAssetPath, readManifestFile } from 'services/manifest-servic
import { getTasksForClientSide, getTasksForServerSide } from 'services/share/deploy';
import { ManifestHostingType } from 'types/services/manifest-service';
import logger from 'utils/logger';
import { addRegionToFlags, chooseRegionIfNeeded, getRegionFromString } from 'utils/region';

const MESSAGES = {
directory: 'Directory path of you project in your machine. If not included will use the current working directory.',
Expand All @@ -19,27 +20,29 @@ export default class AppDeploy extends AuthenticatedCommand {
static description = 'Deploy an app using manifest file.';
static withPrintCommand = false;
static examples = ['<%= config.bin %> <%= command.id %>'];
static flags = AppDeploy.serializeFlags({
directoryPath: Flags.string({
char: 'd',
description: MESSAGES.directory,
static flags = AppDeploy.serializeFlags(
addRegionToFlags({
directoryPath: Flags.string({
char: 'd',
description: MESSAGES.directory,
}),
appId: Flags.string({
char: 'a',
aliases: ['appId'],
description: MESSAGES.appId,
}),
appVersionId: Flags.string({
char: 'v',
aliases: ['versionId'],
description: MESSAGES.appVersionId,
}),
force: Flags.boolean({
char: 'f',
aliases: ['force'],
description: MESSAGES.force,
}),
}),
appId: Flags.string({
char: 'a',
aliases: ['appId'],
description: MESSAGES.appId,
}),
appVersionId: Flags.string({
char: 'v',
aliases: ['versionId'],
description: MESSAGES.appVersionId,
}),
force: Flags.boolean({
char: 'f',
aliases: ['force'],
description: MESSAGES.force,
}),
});
);

DEBUG_TAG = 'app_deploy';

Expand All @@ -57,26 +60,37 @@ export default class AppDeploy extends AuthenticatedCommand {
public async run(): Promise<void> {
try {
const { flags } = await this.parse(AppDeploy);

const manifestFileDir = flags.directoryPath || getCurrentWorkingDirectory();
const { directoryPath, force } = flags;
let { appId, appVersionId } = flags;
const region = getRegionFromString(flags?.region);
const manifestFileDir = directoryPath || getCurrentWorkingDirectory();
const manifestFileData = readManifestFile(manifestFileDir);
flags.appId = flags.appId || manifestFileData.app.id;
appId = appId || manifestFileData.app.id;

appVersionId = await this.getAppVersionId(appVersionId, appId, force);

flags.appVersionId = await this.getAppVersionId(flags.appVersionId, flags.appId, flags.force);
const selectedRegion = await chooseRegionIfNeeded(region, {
appVersionId: Number(appVersionId),
});

this.preparePrintCommand(this, { appVersionId: flags.appVersionId, directoryPath: manifestFileData });
this.preparePrintCommand(this, { appVersionId: appVersionId, directoryPath: manifestFileData });

const { cdn, server } = manifestFileData.app?.hosting || {};
if (cdn && cdn.type === ManifestHostingType.Upload) {
logger.info('Deploying files to cdn...');
await getTasksForClientSide(Number(flags.appVersionId), getManifestAssetPath(manifestFileDir, cdn.path)).run();
await getTasksForClientSide(
Number(appVersionId),
getManifestAssetPath(manifestFileDir, cdn.path),
selectedRegion,
).run();
}

if (server && server.type === ManifestHostingType.Upload) {
logger.info('Deploying server side files...');
await getTasksForServerSide(
Number(flags.appVersionId),
Number(appVersionId),
getManifestAssetPath(manifestFileDir, server.path),
selectedRegion,
).run();
}
} catch (error) {
Expand Down
5 changes: 4 additions & 1 deletion src/commands/app/list.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,10 @@ import { App } from 'types/services/apps-service';
import logger from 'utils/logger';

const printApps = (apps: Array<App>) => {
logger.table(apps);
const cleanedApps = apps.map(app => {
return { id: app.id, name: app.name };
});
logger.table(cleanedApps);
};

export default class AppList extends AuthenticatedCommand {
Expand Down
53 changes: 30 additions & 23 deletions src/commands/code/env.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import { PromptService } from 'services/prompt-service';
import { ManageAppEnvFlags } from 'types/commands/manage-app-env';
import { AppId } from 'types/general';
import logger from 'utils/logger';
import { addRegionToFlags, chooseRegionIfNeeded, getRegionFromString } from 'utils/region';

const MODES_WITH_KEYS: Array<APP_ENV_MANAGEMENT_MODES> = [
APP_ENV_MANAGEMENT_MODES.SET,
Expand Down Expand Up @@ -68,46 +69,52 @@ export default class Env extends AuthenticatedCommand {

static examples = ['<%= config.bin %> <%= command.id %>'];

static flags = Env.serializeFlags({
appId: Flags.integer({
char: 'i',
aliases: ['a'],
description: 'The id of the app to manage environment variables for',
static flags = Env.serializeFlags(
addRegionToFlags({
appId: Flags.integer({
char: 'i',
aliases: ['a'],
description: 'The id of the app to manage environment variables for',
}),
mode: Flags.string({
char: 'm',
description: 'management mode',
options: Object.values(APP_ENV_MANAGEMENT_MODES),
}),
key: Flags.string({
char: 'k',
description: 'variable key [required for set and delete]]',
relationships: [flagsWithModeRelationships],
}),
value: Flags.string({
char: 'v',
description: 'variable value [required for set]',
relationships: [flagsWithModeRelationships],
}),
}),
mode: Flags.string({
char: 'm',
description: 'management mode',
options: Object.values(APP_ENV_MANAGEMENT_MODES),
}),
key: Flags.string({
char: 'k',
description: 'variable key [required for set and delete]]',
relationships: [flagsWithModeRelationships],
}),
value: Flags.string({
char: 'v',
description: 'variable value [required for set]',
relationships: [flagsWithModeRelationships],
}),
});
);

static args = {};
DEBUG_TAG = 'env';
public async run(): Promise<void> {
try {
const { flags } = await this.parse(Env);
const { region: strRegion } = flags;
const region = getRegionFromString(strRegion);
let { mode, key, value, appId } = flags as ManageAppEnvFlags;

if (!appId) {
appId = Number(await DynamicChoicesService.chooseApp());
}

const selectedRegion = await chooseRegionIfNeeded(region, { appId });

mode = await promptForModeIfNotProvided(mode);
key = await promptForKeyIfNotProvided(mode, appId, key);
value = await promptForValueIfNotProvided(mode, value);
this.preparePrintCommand(this, { appId, mode, key, value });
this.preparePrintCommand(this, { appId, mode, key, value, region: selectedRegion });

await handleEnvironmentRequest(appId, mode, key, value);
await handleEnvironmentRequest(appId, mode, key, value, selectedRegion);
} catch (error: any) {
logger.debug(error, this.DEBUG_TAG);

Expand Down
74 changes: 39 additions & 35 deletions src/commands/code/logs.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import { PromptService } from 'services/prompt-service';
import { EventSource, LogType, LogsCommandArguments, LogsFilterCriteriaArguments } from 'types/commands/logs';
import { isDefined } from 'utils/guards';
import logger from 'utils/logger';
import { addRegionToFlags, chooseRegionIfNeeded, getRegionFromString } from 'utils/region';
import { TIME_IN_MILLISECONDS } from 'utils/time-enum';
import { getDayDiff, isDate } from 'utils/validations';

Expand Down Expand Up @@ -46,53 +47,56 @@ export default class Logs extends AuthenticatedCommand {

static examples = ['<%= config.bin %> <%= command.id %> -i APP_VERSION_ID -t LOGS_TYPE'];

static flags = Logs.serializeFlags({
appVersionId: Flags.integer({
char: 'i',
aliases: ['v'],
description: APP_VERSION_ID_TO_ENTER,
static flags = Logs.serializeFlags(
addRegionToFlags({
appVersionId: Flags.integer({
char: 'i',
aliases: ['v'],
description: APP_VERSION_ID_TO_ENTER,
}),
logsType: Flags.string({
char: 't',
description: LOGS_TYPE_TO_LISTEN_PROMPT_MESSAGE,
}),
eventSource: Flags.string({
char: 's',
description: EVENT_SOURCE,
}),
logsStartDate: Flags.string({
char: 'f',
description: 'Start date (MM/DD/YYYY HH:mm) e.g. "03/24/1983 15:45"' + SUPPORTED_HISTORY_FLAGS,
relationships,
}),
logsEndDate: Flags.string({
char: 'e',
description: 'End date (MM/DD/YYYY HH:mm) e.g. "03/25/1983 16:45"' + SUPPORTED_HISTORY_FLAGS,
relationships,
}),
logSearchFromText: Flags.string({
char: 'r',
description: EVENT_SEARCH_FOR_TEXT,
relationships,
}),
}),
logsType: Flags.string({
char: 't',
description: LOGS_TYPE_TO_LISTEN_PROMPT_MESSAGE,
}),
eventSource: Flags.string({
char: 's',
description: EVENT_SOURCE,
}),
logsStartDate: Flags.string({
char: 'f',
description: 'Start date (MM/DD/YYYY HH:mm) e.g. "03/24/1983 15:45"' + SUPPORTED_HISTORY_FLAGS,
relationships,
}),
logsEndDate: Flags.string({
char: 'e',
description: 'End date (MM/DD/YYYY HH:mm) e.g. "03/25/1983 16:45"' + SUPPORTED_HISTORY_FLAGS,
relationships,
}),
logSearchFromText: Flags.string({
char: 'r',
description: EVENT_SEARCH_FOR_TEXT,
relationships,
}),
});
);

static args = {};
DEBUG_TAG = 'logs';

public async run(): Promise<void> {
try {
const { flags } = await this.parse(Logs);

const { logsStartDate, logsEndDate, logSearchFromText, region: strRegion } = flags;
const region = getRegionFromString(strRegion);
const appVersionId = await this.getAppVersionId(flags.appVersionId);

const selectedRegion = await chooseRegionIfNeeded(region, { appVersionId });
const eventSource = (flags.eventSource || (await eventSourcePrompt())) as EventSource;
const logsType = await this.getLogType(eventSource, flags.logsType);
const logsFilterCriteria = await this.getLogsFilterCriteria(
eventSource,
flags.logsStartDate,
flags.logsEndDate,
flags.logSearchFromText,
logsStartDate,
logsEndDate,
logSearchFromText,
);

const args: LogsCommandArguments = {
Expand All @@ -110,7 +114,7 @@ export default class Logs extends AuthenticatedCommand {
logSearchFromText: logsFilterCriteria?.text,
});

const clientChannel = await logsStream(args.appVersionId, args.logsType, logsFilterCriteria);
const clientChannel = await logsStream(args.appVersionId, args.logsType, logsFilterCriteria, selectedRegion);
await streamMessages(clientChannel);
} catch (error: any) {
logger.debug(error, this.DEBUG_TAG);
Expand Down
Loading

0 comments on commit c6d4a71

Please sign in to comment.