Skip to content
Draft
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
4 changes: 2 additions & 2 deletions .talismanrc
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
fileignoreconfig:
- filename: pnpm-lock.yaml
checksum: 90c094faa23d82277ad7d48858147354ad28d11c0f317722a79bd70658b23835
- filename: packages/contentstack-branches/src/commands/cm/branches/generate-scripts.ts
checksum: 84b73eab889d8ee4b39f6e7317a3c55de0322f03113bc7cbd498062018353a97
version: '1.0'
50 changes: 49 additions & 1 deletion packages/contentstack-branches/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ $ npm install -g @contentstack/cli-cm-branches
$ csdx COMMAND
running command...
$ csdx (--version)
@contentstack/cli-cm-branches/1.7.0-beta.1 darwin-arm64 node-v22.13.1
@contentstack/cli-cm-branches/1.7.0 darwin-arm64 node-v24.14.0
$ csdx --help [COMMAND]
USAGE
$ csdx COMMAND
Expand All @@ -52,7 +52,9 @@ USAGE
* [`csdx cm:branches:create`](#csdx-cmbranchescreate)
* [`csdx cm:branches:delete [-uid <value>] [-k <value>]`](#csdx-cmbranchesdelete--uid-value--k-value)
* [`csdx cm:branches:diff [--base-branch <value>] [--compare-branch <value>] [-k <value>][--module <value>] [--format <value>] [--csv-path <value>]`](#csdx-cmbranchesdiff---base-branch-value---compare-branch-value--k-value--module-value---format-value---csv-path-value)
* [`csdx cm:branches:generate-scripts -k <value> --merge-uid <value>`](#csdx-cmbranchesgenerate-scripts--k-value---merge-uid-value)
* [`csdx cm:branches:merge [-k <value>][--compare-branch <value>] [--no-revert] [--export-summary-path <value>] [--use-merge-summary <value>] [--comment <value>] [--base-branch <value>]`](#csdx-cmbranchesmerge--k-value--compare-branch-value---no-revert---export-summary-path-value---use-merge-summary-value---comment-value---base-branch-value)
* [`csdx cm:branches:merge-status -k <value> --merge-uid <value>`](#csdx-cmbranchesmerge-status--k-value---merge-uid-value)

## `csdx cm:branches`

Expand Down Expand Up @@ -192,6 +194,29 @@ EXAMPLES

_See code: [src/commands/cm/branches/diff.ts](https://github.com/contentstack/cli/blob/main/packages/contentstack-export/src/commands/cm/branches/diff.ts)_

## `csdx cm:branches:generate-scripts -k <value> --merge-uid <value>`

Generate entry migration scripts for a completed merge job

```
USAGE
$ csdx cm:branches:generate-scripts -k <value> --merge-uid <value>

FLAGS
-k, --stack-api-key=<value> (required) Provide your stack API key.
--merge-uid=<value> (required) Merge job UID to generate scripts for.

DESCRIPTION
Generate entry migration scripts for a completed merge job

EXAMPLES
$ csdx cm:branches:generate-scripts -k bltxxxxxxxx --merge-uid merge_abc123

$ csdx cm:branches:generate-scripts --stack-api-key bltxxxxxxxx --merge-uid merge_abc123
```

_See code: [src/commands/cm/branches/generate-scripts.ts](https://github.com/contentstack/cli/blob/main/packages/contentstack-export/src/commands/cm/branches/generate-scripts.ts)_

## `csdx cm:branches:merge [-k <value>][--compare-branch <value>] [--no-revert] [--export-summary-path <value>] [--use-merge-summary <value>] [--comment <value>] [--base-branch <value>]`

Merge changes from a branch
Expand Down Expand Up @@ -230,4 +255,27 @@ EXAMPLES
```

_See code: [src/commands/cm/branches/merge.ts](https://github.com/contentstack/cli/blob/main/packages/contentstack-export/src/commands/cm/branches/merge.ts)_

## `csdx cm:branches:merge-status -k <value> --merge-uid <value>`

Check the status of a branch merge job

```
USAGE
$ csdx cm:branches:merge-status -k <value> --merge-uid <value>

FLAGS
-k, --stack-api-key=<value> (required) Provide your stack API key.
--merge-uid=<value> (required) Merge job UID to check status for.

DESCRIPTION
Check the status of a branch merge job

EXAMPLES
$ csdx cm:branches:merge-status -k bltxxxxxxxx --merge-uid merge_abc123

$ csdx cm:branches:merge-status --stack-api-key bltxxxxxxxx --merge-uid merge_abc123
```

_See code: [src/commands/cm/branches/merge-status.ts](https://github.com/contentstack/cli/blob/main/packages/contentstack-export/src/commands/cm/branches/merge-status.ts)_
<!-- commandsstop -->
4 changes: 3 additions & 1 deletion packages/contentstack-branches/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "@contentstack/cli-cm-branches",
"description": "Contentstack CLI plugin to do branches operations",
"version": "1.7.0",
"version": "1.8.0",
"author": "Contentstack",
"bugs": "https://github.com/contentstack/cli/issues",
"dependencies": {
Expand Down Expand Up @@ -75,6 +75,8 @@
"cm:branches:delete": "BRDEL",
"cm:branches:diff": "BRDIF",
"cm:branches:merge": "BRMRG",
"cm:branches:merge-status": "BRMST",
"cm:branches:generate-scripts": "BRGNS",
"cm:branches": "BRLS"
}
},
Expand Down
137 changes: 69 additions & 68 deletions packages/contentstack-branches/src/branch/diff-handler.ts
Original file line number Diff line number Diff line change
@@ -1,20 +1,21 @@
import startCase from 'lodash/startCase';
import camelCase from 'lodash/camelCase';
import { cliux } from '@contentstack/cli-utilities';
import camelCase from 'lodash/camelCase';
import startCase from 'lodash/startCase';

import { BranchDiffPayload, BranchOptions } from '../interfaces';
import { getbranchConfig } from '../utils';
import { BranchOptions, BranchDiffPayload } from '../interfaces';
import { askBaseBranch, askCompareBranch, askStackAPIKey, selectModule } from '../utils/interactive';
import {
fetchBranchesDiff,
parseSummary,
printSummary,
filterBranchDiffDataByModule,
parseCompactText,
printCompactTextView,
parseSummary,
parseVerbose,
printCompactTextView,
printSummary,
printVerboseTextView,
filterBranchDiffDataByModule,
} from '../utils/branch-diff-utility';
import { exportCSVReport } from '../utils/csv-utility';
import { askBaseBranch, askCompareBranch, askStackAPIKey, selectModule } from '../utils/interactive';

export default class BranchDiffHandler {
private options: BranchOptions;
Expand All @@ -23,46 +24,36 @@ export default class BranchDiffHandler {
this.options = params;
}

async run(): Promise<any> {
await this.validateMandatoryFlags();
await this.initBranchDiffUtility();
}

/**
* @methods validateMandatoryFlags - validate flags and prompt to select required flags
* @returns {*} {Promise<void>}
* @methods displayBranchDiffTextAndVerbose - to show branch differences in compactText or detailText format
* @returns {*} {void}
* @memberof BranchDiff
*/
async validateMandatoryFlags(): Promise<void> {
let baseBranch: string;
if (!this.options.stackAPIKey) {
this.options.stackAPIKey = await askStackAPIKey();
}

if (!this.options.baseBranch) {
baseBranch = getbranchConfig(this.options.stackAPIKey);
if (!baseBranch) {
this.options.baseBranch = await askBaseBranch();
} else {
this.options.baseBranch = baseBranch;
}
}

if (!this.options.compareBranch) {
this.options.compareBranch = await askCompareBranch();
}

if (!this.options.module) {
this.options.module = await selectModule();
}
async displayBranchDiffTextAndVerbose(branchDiffData: any[], payload: BranchDiffPayload): Promise<void> {
const spinner = cliux.loaderV2('Loading branch differences...');
if (this.options.format === 'compact-text') {
const branchTextRes = parseCompactText(branchDiffData);
cliux.loaderV2('', spinner);
printCompactTextView(branchTextRes);
} else if (this.options.format === 'detailed-text') {
const verboseRes = await parseVerbose(branchDiffData, payload);
cliux.loaderV2('', spinner);
printVerboseTextView(verboseRes);

if (this.options.format === 'detailed-text' && !this.options.csvPath) {
this.options.csvPath = process.cwd();
exportCSVReport(payload.module, verboseRes, this.options.csvPath);
}
}

if(baseBranch){
cliux.print(`\nBase branch: ${baseBranch}`, { color: 'grey' });
}
/**
* @methods displaySummary - show branches summary on CLI
* @returns {*} {void}
* @memberof BranchDiff
*/
displaySummary(branchDiffData: any[], module: string): void {
cliux.print(' ');
cliux.print(`${startCase(camelCase(module))} Summary:`, { color: 'yellow' });
const diffSummary = parseSummary(branchDiffData, this.options.baseBranch, this.options.compareBranch);
printSummary(diffSummary);
}

/**
Expand All @@ -73,11 +64,11 @@ export default class BranchDiffHandler {
async initBranchDiffUtility(): Promise<void> {
const spinner = cliux.loaderV2('Loading branch differences...');
const payload: BranchDiffPayload = {
module: '',
apiKey: this.options.stackAPIKey,
baseBranch: this.options.baseBranch,
compareBranch: this.options.compareBranch,
host: this.options.host
host: this.options.host,
module: ''
};

if (this.options.module === 'content-types') {
Expand All @@ -91,7 +82,7 @@ export default class BranchDiffHandler {
cliux.loaderV2('', spinner);

if(this.options.module === 'all'){
for (let module in diffData) {
for (const module in diffData) {
const branchDiff = diffData[module];
payload.module = module;
this.displaySummary(branchDiff, module);
Expand All @@ -104,35 +95,45 @@ export default class BranchDiffHandler {
}
}

/**
* @methods displaySummary - show branches summary on CLI
* @returns {*} {void}
* @memberof BranchDiff
*/
displaySummary(branchDiffData: any[], module: string): void {
cliux.print(' ');
cliux.print(`${startCase(camelCase(module))} Summary:`, { color: 'yellow' });
const diffSummary = parseSummary(branchDiffData, this.options.baseBranch, this.options.compareBranch);
printSummary(diffSummary);
async run(): Promise<any> {
await this.validateMandatoryFlags();
await this.initBranchDiffUtility();
}

/**
* @methods displayBranchDiffTextAndVerbose - to show branch differences in compactText or detailText format
* @returns {*} {void}
* @methods validateMandatoryFlags - validate flags and prompt to select required flags
* @returns {*} {Promise<void>}
* @memberof BranchDiff
*/
async displayBranchDiffTextAndVerbose(branchDiffData: any[], payload: BranchDiffPayload): Promise<void> {
const spinner = cliux.loaderV2('Loading branch differences...');
if (this.options.format === 'compact-text') {
const branchTextRes = parseCompactText(branchDiffData);
cliux.loaderV2('', spinner);
printCompactTextView(branchTextRes);
} else if (this.options.format === 'detailed-text') {
const verboseRes = await parseVerbose(branchDiffData, payload);
cliux.loaderV2('', spinner);
printVerboseTextView(verboseRes);
async validateMandatoryFlags(): Promise<void> {
let baseBranch: string;
if (!this.options.stackAPIKey) {
this.options.stackAPIKey = await askStackAPIKey();
}

exportCSVReport(payload.module, verboseRes, this.options.csvPath);
if (!this.options.baseBranch) {
baseBranch = getbranchConfig(this.options.stackAPIKey);
if (!baseBranch) {
this.options.baseBranch = await askBaseBranch();
} else {
this.options.baseBranch = baseBranch;
}
}

if (!this.options.compareBranch) {
this.options.compareBranch = await askCompareBranch();
}

if (!this.options.module) {
this.options.module = await selectModule();
}

if (this.options.format === 'detailed-text' && !this.options.csvPath) {
this.options.csvPath = process.cwd();
}

if(baseBranch){
cliux.print(`\nBase branch: ${baseBranch}`, { color: 'grey' });
}
}
}
2 changes: 1 addition & 1 deletion packages/contentstack-branches/src/branch/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@
* Business logics can be written inside this directory
*/

export { default as MergeHandler } from './merge-handler';
export { default as BranchDiffHandler } from './diff-handler';
export { default as MergeHandler } from './merge-handler';
Loading
Loading