Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
1cf97ff
Updated branches merge revamp to handle poling timeouts
netrajpatel Mar 27, 2026
854f828
Lint fixes
netrajpatel Mar 27, 2026
a973409
Merge branch 'development' into feat/dx-5584
netrajpatel Mar 31, 2026
3161b7b
Reverted generate script command
netrajpatel Apr 2, 2026
d4725bb
Merge branch 'development' into feat/dx-5584
netrajpatel Apr 2, 2026
0affac5
Merge branch 'development' into feat/dx-5584
netrajpatel Apr 6, 2026
057c3e0
Bumped versions
netrajpatel Apr 8, 2026
90e92c0
Merge branch 'feat/dx-5584' of github.com:contentstack/cli-plugins in…
netrajpatel Apr 8, 2026
95ecf79
Merge branch 'development' into feat/dx-5584
netrajpatel Apr 17, 2026
991d6c0
Snyk fixes
netrajpatel Apr 17, 2026
3fe416a
Merge pull request #58 from contentstack/feat/dx-5584
netrajpatel Apr 17, 2026
196e55b
fix: Dependency updated
cs-raj Apr 20, 2026
f03606f
updated lockfile
cs-raj Apr 20, 2026
ae59719
chore: dependency update
cs-raj Apr 20, 2026
030e8cc
Merge pull request #97 from contentstack/fix/DX-6181
cs-raj Apr 20, 2026
88d64b4
chore: version bump
cs-raj Apr 20, 2026
be9b283
chore: version update
Apr 21, 2026
97e4410
chore: version update
Apr 21, 2026
fe96837
Merge pull request #99 from contentstack/chore/Version
naman-contentstack Apr 21, 2026
c5ef996
Merge pull request #100 from contentstack/development
naman-contentstack Apr 21, 2026
a7d3c56
Merge pull request #103 from contentstack/main
naman-contentstack Apr 21, 2026
00cb29d
Merge branch 'development' into fix/back-merge
Apr 21, 2026
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
12 changes: 11 additions & 1 deletion .talismanrc
Original file line number Diff line number Diff line change
@@ -1,4 +1,14 @@
fileignoreconfig:
- filename: pnpm-lock.yaml
checksum: 8874a1f72aa1a707ee8303d51842e4c70746f94f6ccc4eeb51208a5ce6b6038d
checksum: ddbcf64748cafbd34d9141252d63d5e0f470bd918dc354196f6a865b66050701
- filename: packages/contentstack-branches/src/utils/create-branch.ts
checksum: d0613295ee26f7a77d026e40db0a4ab726fabd0a74965f729f1a66d1ef14768f
- filename: packages/contentstack-branches/README.md
checksum: ad32bd365db7f085cc2ea133d69748954606131ec6157a272a3471aea60011c2
- filename: packages/contentstack-branches/src/branch/diff-handler.ts
checksum: 3cd4d26a2142cab7cbf2094c9251e028467d17d6a1ed6daf22f21975133805f1
- filename: packages/contentstack-branches/src/commands/cm/branches/merge-status.ts
checksum: 6e5b959ddcc5ff68e03c066ea185fcf6c6e57b1819069730340af35aad8a93a8
- filename: packages/contentstack-branches/src/branch/merge-handler.ts
checksum: 4fd8dba9b723733530b9ba12e81e1d3e5d60b73ac4c082defb10593f257bb133
version: '1.0'
4 changes: 2 additions & 2 deletions packages/contentstack-audit/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,10 @@
"fs-extra": "^11.3.0",
"lodash": "^4.18.1",
"uuid": "^9.0.1",
"winston": "^3.17.0"
"winston": "^3.19.0"
},
"devDependencies": {
"@oclif/test": "^4.1.13",
"@oclif/test": "^4.1.18",
"@types/chai": "^4.3.20",
"@types/fs-extra": "^11.0.4",
"@types/mocha": "^10.0.10",
Expand Down
2 changes: 1 addition & 1 deletion packages/contentstack-bootstrap/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
"tar": "^7.5.11"
},
"devDependencies": {
"@oclif/test": "^4.1.13",
"@oclif/test": "^4.1.18",
"@types/inquirer": "^9.0.8",
"@types/mkdirp": "^1.0.2",
"@types/node": "^18.11.9",
Expand Down
24 changes: 24 additions & 0 deletions packages/contentstack-branches/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ USAGE
* [`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: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 @@ -230,4 +231,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 -->
1 change: 1 addition & 0 deletions packages/contentstack-branches/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@
"cm:branches:delete": "BRDEL",
"cm:branches:diff": "BRDIF",
"cm:branches:merge": "BRMRG",
"cm:branches:merge-status": "BRMST",
"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