Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31,266 changes: 15,556 additions & 15,710 deletions package-lock.json

Large diffs are not rendered by default.

14 changes: 7 additions & 7 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@contentstack/cli-launch",
"version": "1.7.1",
"version": "1.8.0",
"description": "Launch related operations",
"author": "Contentstack CLI",
"bin": {
Expand All @@ -21,10 +21,10 @@
],
"dependencies": {
"@apollo/client": "^3.11.8",
"@contentstack/cli-command": "~1.3.2",
"@contentstack/cli-utilities": "~1.8.0",
"@oclif/core": "^3.27.0",
"@oclif/plugin-help": "^5.2.20",
"@contentstack/cli-command": "^1.4.0",
"@contentstack/cli-utilities": "^1.10.0",
"@oclif/core":"^4.2.7",
"@oclif/plugin-help": "^6.2.25",
"@oclif/plugin-plugins": "^5.4.15",
"@rollup/plugin-commonjs": "^28.0.2",
"@rollup/plugin-json": "^6.1.0",
Expand Down Expand Up @@ -56,11 +56,11 @@
"@types/sinon": "^17.0.3",
"chai": "^4.5.0",
"eslint": "^7.32.0",
"eslint-config-oclif": "^4",
"eslint-config-oclif": "^6.0.15",
"eslint-config-oclif-typescript": "^3.1.13",
"mocha": "^11.0.1",
"nyc": "^17.1.0",
"oclif": "^3.17.2",
"oclif": "^4.17.30",
"shx": "^0.3.4",
"sinon": "^19.0.2",
"ts-node": "^10.9.2",
Expand Down
33 changes: 14 additions & 19 deletions src/adapters/base-class.ts
Original file line number Diff line number Diff line change
Expand Up @@ -633,25 +633,20 @@ export default class BaseClass {
* @memberof BaseClass
*/
printAllVariables(): void {
ux.table(
[
...(this.config.flags['show-variables']
? this.envVariables
: this.envVariables.map(({ key, value }) => ({
key,
value: replace(value, /./g, '*'),
}))),
{ key: '', value: '' },
],
{
key: {
minWidth: 7,
},
value: {
minWidth: 7,
},
},
);
const envVariablesData = [
...(this.config.flags['show-variables']
? this.envVariables
: this.envVariables.map(({ key, value }) => ({
key,
value: replace(value, /./g, '*'),
}))),
];

const headers = [
{ value: 'key', },
{ value: 'value',},
]
ux.table(headers, envVariablesData);
}

/**
Expand Down
20 changes: 10 additions & 10 deletions src/adapters/file-upload.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import filter from 'lodash/filter';
import includes from 'lodash/includes';
import isEmpty from 'lodash/isEmpty';
import { basename, resolve } from 'path';
import { cliux, configHandler, HttpClient, ux } from '@contentstack/cli-utilities';
import { cliux, configHandler, HttpClient } from '@contentstack/cli-utilities';
import { createReadStream, existsSync, PathLike, statSync, readFileSync } from 'fs';

import { print } from '../util';
Expand Down Expand Up @@ -262,7 +262,7 @@ export default class FileUpload extends BaseClass {
* @memberof FileUpload
*/
async archive() {
ux.action.start('Preparing zip file');
cliux.loader('Preparing zip file');
const projectName = basename(this.config.projectBasePath);
const zipName = `${Date.now()}_${projectName}.zip`;
const zipPath = resolve(this.config.projectBasePath, zipName);
Expand Down Expand Up @@ -296,7 +296,7 @@ export default class FileUpload extends BaseClass {
this.exit(1);
}

ux.action.stop();
cliux.loader();
return { zipName, zipPath, projectName };
}

Expand Down Expand Up @@ -347,7 +347,7 @@ export default class FileUpload extends BaseClass {
}

private async submitFormData(formData: FormData, uploadUrl: string): Promise<void> {
ux.action.start('Starting file upload...');
cliux.loader('Starting file upload...');
try {
await new Promise<void>((resolve, reject) => {
formData.submit(uploadUrl, (error, res) => {
Expand All @@ -359,9 +359,9 @@ export default class FileUpload extends BaseClass {
});
});

ux.action.stop();
cliux.loader();
} catch (error) {
ux.action.stop('File upload failed!');
cliux.loader('File upload failed!');
this.log('File upload failed. Please try again.', 'error');
if (error instanceof Error) {
this.log(error.message, 'error');
Expand All @@ -375,7 +375,7 @@ export default class FileUpload extends BaseClass {
uploadUrl: string,
headers: Array<{ key: string; value: string }>,
): Promise<void> {
ux.action.start('Starting file upload...');
cliux.loader('Starting file upload...');
const httpClient = new HttpClient();
const file = readFileSync(filePath);

Expand All @@ -392,15 +392,15 @@ export default class FileUpload extends BaseClass {
const { status } = response;

if (status >= 200 && status < 300) {
ux.action.stop();
cliux.loader();
} else {
ux.action.stop('File upload failed!');
cliux.loader('File upload failed!');
this.log('File upload failed. Please try again.', 'error');
this.log(`Error: ${status}, ${response?.statusText}`, 'error');
this.exit(1);
}
} catch (error) {
ux.action.stop('File upload failed!');
cliux.loader('File upload failed!');
this.log('File upload failed. Please try again.', 'error');
if (error instanceof Error) {
this.log(`Error: ${error.message}`, 'error');
Expand Down
30 changes: 13 additions & 17 deletions src/adapters/pre-check.ts
Original file line number Diff line number Diff line change
Expand Up @@ -74,27 +74,23 @@ export default class PreCheck extends BaseClass {
})?.name || '',
};

const headers = [
{ value: 'Project Name'},
{ value: 'Project Type'},
{ value: 'Environment'},
{ value: 'Framework Preset'},
];

if (repository?.repositoryName) {
detail['Repository'] = repository.repositoryName;
headers.push({ value: 'Repository' });
}

if(!detail){
this.exit(1);
}

ux.table([detail, {}], {
'Project Name': {
minWidth: 7,
},
'Project Type': {
minWidth: 7,
},
Environment: {
minWidth: 7,
},
Repository: {
minWidth: 7,
},
'Framework Preset': {
minWidth: 7,
},
});
ux.table(headers, [detail]);
}
}

Expand Down
24 changes: 7 additions & 17 deletions src/commands/launch/deployments.ts
Original file line number Diff line number Diff line change
Expand Up @@ -73,23 +73,13 @@ export default class Deployments extends BaseCommand<typeof Deployments> {
async showDeployments() {
const environments = await this.getEnvironments();

ux.table(environments, {
environment: {
minWidth: 7,
},
deploymentUrl: {
minWidth: 7,
header: 'Deployment Url',
},
commitMessage: {
minWidth: 7,
header: 'Commit Message',
},
createdAt: {
minWidth: 7,
header: 'Created At',
},
});
const headers = [
{ value: 'environment', },
{ value: 'deploymentUrl',},
{ value: 'commitMessage',},
{ value: 'createdAt', },
];
ux.table(headers, environments);
}

/**
Expand Down
27 changes: 9 additions & 18 deletions src/commands/launch/environments.ts
Original file line number Diff line number Diff line change
Expand Up @@ -126,8 +126,7 @@ export default class Environments extends BaseCommand<typeof Environments> {
process.exit(1);
});

ux.table(
map(environments, ({ uid, name, frameworkPreset }) => {
const environmentsData = map(environments, ({ uid, name, frameworkPreset }) => {
return {
uid: chalk.green(uid),
name: chalk.green(name),
Expand All @@ -137,21 +136,13 @@ export default class Environments extends BaseCommand<typeof Environments> {
})?.name || '',
),
};
}),
{
uid: {
minWidth: 7,
header: 'UID',
},
name: {
minWidth: 7,
header: 'Name',
},
frameworkPreset: {
minWidth: 7,
header: 'Framework',
},
},
);
});
const headers = [
{ value: 'uid', },
{ value: 'name',},
{ value: 'frameworkPreset',},
];
ux.table(headers, environmentsData);

}
}
28 changes: 18 additions & 10 deletions src/util/logs-polling-utilities.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import EventEmitter from 'events';
import { ux } from '@contentstack/cli-utilities';
import { cliux } from '@contentstack/cli-utilities';
import { ApolloClient, ObservableQuery } from '@apollo/client/core';
import { Ora } from 'ora';

import { LogPollingInput, ConfigType } from '../types';
import { deploymentQuery, deploymentLogsQuery, serverlessLogsQuery } from '../graphql';
Expand All @@ -14,6 +15,7 @@ export default class LogPolling {
public deploymentStatus!: string;
public startTime!: number;
public endTime!: number;
public loader!: Ora | void;

constructor(params: LogPollingInput) {
const { apolloLogsClient, apolloManageClient, config, $event } = params;
Expand Down Expand Up @@ -112,10 +114,11 @@ export default class LogPolling {
): void {
let timestamp: number = 0;
logsWatchQuery.subscribe(async({ data, errors, error }) => {
ux.action.start('Loading deployment logs...');

if(!this.loader){
this.loader = cliux.loaderV2('Loading deployment logs...');
}
if (error) {
ux.action.stop();
this.loader=cliux.loaderV2('done', this.loader);
this.$event.emit('deployment-logs', {
message: error?.message,
msgType: 'error',
Expand All @@ -127,7 +130,7 @@ export default class LogPolling {
logsWatchQuery.stopPolling();
}
if (errors?.length && data === null) {
ux.action.stop();
this.loader=cliux.loaderV2('done', this.loader);
this.$event.emit('deployment-logs', {
message: errors,
msgType: 'error',
Expand All @@ -141,7 +144,7 @@ export default class LogPolling {
if (this.deploymentStatus) {
let logsData = data?.getLogs;
if (logsData?.length) {
ux.action.stop();
this.loader=cliux.loaderV2('done', this.loader);
this.$event.emit('deployment-logs', {
message: logsData,
msgType: 'info',
Expand All @@ -160,8 +163,11 @@ export default class LogPolling {
message: 'DONE',
msgType: 'debug',
});
if(this.loader){
this.loader=cliux.loaderV2('done', this.loader);
}
}
}
});
}

Expand Down Expand Up @@ -211,21 +217,23 @@ export default class LogPolling {
>,
): void {
serverLogsWatchQuery.subscribe(({ data, errors, error }) => {
ux.action.start('Loading server logs...');
if(!this.loader){
this.loader = cliux.loaderV2('Loading server logs...');
}
if (error) {
ux.action.stop();
this.loader=cliux.loaderV2('done', this.loader);
this.$event.emit('server-logs', { message: error?.message, msgType: 'error' });
}
if (errors?.length && data === null) {
ux.action.stop();
this.loader=cliux.loaderV2('done', this.loader);
this.$event.emit('server-logs', { message: errors, msgType: 'error' });
serverLogsWatchQuery.stopPolling();
}

let logsData = data?.getServerlessLogs?.logs;
let logsLength = logsData?.length;
if (logsLength > 0) {
ux.action.stop();
this.loader=cliux.loaderV2('done', this.loader);
this.$event.emit('server-logs', { message: logsData, msgType: 'info' });
this.startTime = new Date(logsData[logsLength - 1].timestamp).getTime() + 1;
this.endTime = this.startTime + 10 * 1000;
Expand Down