Skip to content

Commit 1cf97ff

Browse files
committed
Updated branches merge revamp to handle poling timeouts
1 parent 0ce0890 commit 1cf97ff

22 files changed

Lines changed: 1362 additions & 495 deletions

.talismanrc

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,14 @@
11
fileignoreconfig:
2-
- filename: pnpm-lock.yaml
3-
checksum: 90c094faa23d82277ad7d48858147354ad28d11c0f317722a79bd70658b23835
2+
- filename: packages/contentstack-branches/src/commands/cm/branches/merge-status.ts
3+
checksum: 6e5b959ddcc5ff68e03c066ea185fcf6c6e57b1819069730340af35aad8a93a8
4+
- filename: packages/contentstack-branches/README.md
5+
checksum: cde5b34e2fb25e1a8ac4a16d079c154a843c733de224969748138e0345b7d674
6+
- filename: packages/contentstack-branches/src/utils/create-branch.ts
7+
checksum: d0613295ee26f7a77d026e40db0a4ab726fabd0a74965f729f1a66d1ef14768f
8+
- filename: packages/contentstack-branches/src/branch/diff-handler.ts
9+
checksum: 3cd4d26a2142cab7cbf2094c9251e028467d17d6a1ed6daf22f21975133805f1
10+
- filename: packages/contentstack-branches/src/commands/cm/branches/generate-scripts.ts
11+
checksum: e549aa68d73241afbad5deff275e9657028bfce5bf4327adf2248018c5461295
12+
- filename: packages/contentstack-branches/src/branch/merge-handler.ts
13+
checksum: 17aa4048ef4a4a208206c3d6b850c711906323df0d19299f0448dad23305d484
414
version: '1.0'

packages/contentstack-branches/README.md

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ $ npm install -g @contentstack/cli-cm-branches
3737
$ csdx COMMAND
3838
running command...
3939
$ csdx (--version)
40-
@contentstack/cli-cm-branches/1.7.0-beta.1 darwin-arm64 node-v22.13.1
40+
@contentstack/cli-cm-branches/1.7.0 darwin-arm64 node-v24.14.0
4141
$ csdx --help [COMMAND]
4242
USAGE
4343
$ csdx COMMAND
@@ -52,7 +52,9 @@ USAGE
5252
* [`csdx cm:branches:create`](#csdx-cmbranchescreate)
5353
* [`csdx cm:branches:delete [-uid <value>] [-k <value>]`](#csdx-cmbranchesdelete--uid-value--k-value)
5454
* [`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)
55+
* [`csdx cm:branches:generate-scripts -k <value> --merge-uid <value>`](#csdx-cmbranchesgenerate-scripts--k-value---merge-uid-value)
5556
* [`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)
57+
* [`csdx cm:branches:merge-status -k <value> --merge-uid <value>`](#csdx-cmbranchesmerge-status--k-value---merge-uid-value)
5658

5759
## `csdx cm:branches`
5860

@@ -192,6 +194,29 @@ EXAMPLES
192194

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

197+
## `csdx cm:branches:generate-scripts -k <value> --merge-uid <value>`
198+
199+
Generate entry migration scripts for a completed merge job
200+
201+
```
202+
USAGE
203+
$ csdx cm:branches:generate-scripts -k <value> --merge-uid <value>
204+
205+
FLAGS
206+
-k, --stack-api-key=<value> (required) Provide your stack API key.
207+
--merge-uid=<value> (required) Merge job UID to generate scripts for.
208+
209+
DESCRIPTION
210+
Generate entry migration scripts for a completed merge job
211+
212+
EXAMPLES
213+
$ csdx cm:branches:generate-scripts -k bltxxxxxxxx --merge-uid merge_abc123
214+
215+
$ csdx cm:branches:generate-scripts --stack-api-key bltxxxxxxxx --merge-uid merge_abc123
216+
```
217+
218+
_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)_
219+
195220
## `csdx cm:branches:merge [-k <value>][--compare-branch <value>] [--no-revert] [--export-summary-path <value>] [--use-merge-summary <value>] [--comment <value>] [--base-branch <value>]`
196221

197222
Merge changes from a branch
@@ -230,4 +255,27 @@ EXAMPLES
230255
```
231256

232257
_See code: [src/commands/cm/branches/merge.ts](https://github.com/contentstack/cli/blob/main/packages/contentstack-export/src/commands/cm/branches/merge.ts)_
258+
259+
## `csdx cm:branches:merge-status -k <value> --merge-uid <value>`
260+
261+
Check the status of a branch merge job
262+
263+
```
264+
USAGE
265+
$ csdx cm:branches:merge-status -k <value> --merge-uid <value>
266+
267+
FLAGS
268+
-k, --stack-api-key=<value> (required) Provide your stack API key.
269+
--merge-uid=<value> (required) Merge job UID to check status for.
270+
271+
DESCRIPTION
272+
Check the status of a branch merge job
273+
274+
EXAMPLES
275+
$ csdx cm:branches:merge-status -k bltxxxxxxxx --merge-uid merge_abc123
276+
277+
$ csdx cm:branches:merge-status --stack-api-key bltxxxxxxxx --merge-uid merge_abc123
278+
```
279+
280+
_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)_
233281
<!-- commandsstop -->

packages/contentstack-branches/package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "@contentstack/cli-cm-branches",
33
"description": "Contentstack CLI plugin to do branches operations",
4-
"version": "1.7.0",
4+
"version": "1.8.0",
55
"author": "Contentstack",
66
"bugs": "https://github.com/contentstack/cli/issues",
77
"dependencies": {
@@ -75,6 +75,8 @@
7575
"cm:branches:delete": "BRDEL",
7676
"cm:branches:diff": "BRDIF",
7777
"cm:branches:merge": "BRMRG",
78+
"cm:branches:merge-status": "BRMST",
79+
"cm:branches:generate-scripts": "BRGNS",
7880
"cm:branches": "BRLS"
7981
}
8082
},
Lines changed: 69 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,21 @@
1-
import startCase from 'lodash/startCase';
2-
import camelCase from 'lodash/camelCase';
31
import { cliux } from '@contentstack/cli-utilities';
2+
import camelCase from 'lodash/camelCase';
3+
import startCase from 'lodash/startCase';
4+
5+
import { BranchDiffPayload, BranchOptions } from '../interfaces';
46
import { getbranchConfig } from '../utils';
5-
import { BranchOptions, BranchDiffPayload } from '../interfaces';
6-
import { askBaseBranch, askCompareBranch, askStackAPIKey, selectModule } from '../utils/interactive';
77
import {
88
fetchBranchesDiff,
9-
parseSummary,
10-
printSummary,
9+
filterBranchDiffDataByModule,
1110
parseCompactText,
12-
printCompactTextView,
11+
parseSummary,
1312
parseVerbose,
13+
printCompactTextView,
14+
printSummary,
1415
printVerboseTextView,
15-
filterBranchDiffDataByModule,
1616
} from '../utils/branch-diff-utility';
1717
import { exportCSVReport } from '../utils/csv-utility';
18+
import { askBaseBranch, askCompareBranch, askStackAPIKey, selectModule } from '../utils/interactive';
1819

1920
export default class BranchDiffHandler {
2021
private options: BranchOptions;
@@ -23,46 +24,36 @@ export default class BranchDiffHandler {
2324
this.options = params;
2425
}
2526

26-
async run(): Promise<any> {
27-
await this.validateMandatoryFlags();
28-
await this.initBranchDiffUtility();
29-
}
30-
3127
/**
32-
* @methods validateMandatoryFlags - validate flags and prompt to select required flags
33-
* @returns {*} {Promise<void>}
28+
* @methods displayBranchDiffTextAndVerbose - to show branch differences in compactText or detailText format
29+
* @returns {*} {void}
3430
* @memberof BranchDiff
3531
*/
36-
async validateMandatoryFlags(): Promise<void> {
37-
let baseBranch: string;
38-
if (!this.options.stackAPIKey) {
39-
this.options.stackAPIKey = await askStackAPIKey();
40-
}
41-
42-
if (!this.options.baseBranch) {
43-
baseBranch = getbranchConfig(this.options.stackAPIKey);
44-
if (!baseBranch) {
45-
this.options.baseBranch = await askBaseBranch();
46-
} else {
47-
this.options.baseBranch = baseBranch;
48-
}
49-
}
50-
51-
if (!this.options.compareBranch) {
52-
this.options.compareBranch = await askCompareBranch();
53-
}
54-
55-
if (!this.options.module) {
56-
this.options.module = await selectModule();
57-
}
32+
async displayBranchDiffTextAndVerbose(branchDiffData: any[], payload: BranchDiffPayload): Promise<void> {
33+
const spinner = cliux.loaderV2('Loading branch differences...');
34+
if (this.options.format === 'compact-text') {
35+
const branchTextRes = parseCompactText(branchDiffData);
36+
cliux.loaderV2('', spinner);
37+
printCompactTextView(branchTextRes);
38+
} else if (this.options.format === 'detailed-text') {
39+
const verboseRes = await parseVerbose(branchDiffData, payload);
40+
cliux.loaderV2('', spinner);
41+
printVerboseTextView(verboseRes);
5842

59-
if (this.options.format === 'detailed-text' && !this.options.csvPath) {
60-
this.options.csvPath = process.cwd();
43+
exportCSVReport(payload.module, verboseRes, this.options.csvPath);
6144
}
45+
}
6246

63-
if(baseBranch){
64-
cliux.print(`\nBase branch: ${baseBranch}`, { color: 'grey' });
65-
}
47+
/**
48+
* @methods displaySummary - show branches summary on CLI
49+
* @returns {*} {void}
50+
* @memberof BranchDiff
51+
*/
52+
displaySummary(branchDiffData: any[], module: string): void {
53+
cliux.print(' ');
54+
cliux.print(`${startCase(camelCase(module))} Summary:`, { color: 'yellow' });
55+
const diffSummary = parseSummary(branchDiffData, this.options.baseBranch, this.options.compareBranch);
56+
printSummary(diffSummary);
6657
}
6758

6859
/**
@@ -73,11 +64,11 @@ export default class BranchDiffHandler {
7364
async initBranchDiffUtility(): Promise<void> {
7465
const spinner = cliux.loaderV2('Loading branch differences...');
7566
const payload: BranchDiffPayload = {
76-
module: '',
7767
apiKey: this.options.stackAPIKey,
7868
baseBranch: this.options.baseBranch,
7969
compareBranch: this.options.compareBranch,
80-
host: this.options.host
70+
host: this.options.host,
71+
module: ''
8172
};
8273

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

9384
if(this.options.module === 'all'){
94-
for (let module in diffData) {
85+
for (const module in diffData) {
9586
const branchDiff = diffData[module];
9687
payload.module = module;
9788
this.displaySummary(branchDiff, module);
@@ -104,35 +95,45 @@ export default class BranchDiffHandler {
10495
}
10596
}
10697

107-
/**
108-
* @methods displaySummary - show branches summary on CLI
109-
* @returns {*} {void}
110-
* @memberof BranchDiff
111-
*/
112-
displaySummary(branchDiffData: any[], module: string): void {
113-
cliux.print(' ');
114-
cliux.print(`${startCase(camelCase(module))} Summary:`, { color: 'yellow' });
115-
const diffSummary = parseSummary(branchDiffData, this.options.baseBranch, this.options.compareBranch);
116-
printSummary(diffSummary);
98+
async run(): Promise<any> {
99+
await this.validateMandatoryFlags();
100+
await this.initBranchDiffUtility();
117101
}
118102

119103
/**
120-
* @methods displayBranchDiffTextAndVerbose - to show branch differences in compactText or detailText format
121-
* @returns {*} {void}
104+
* @methods validateMandatoryFlags - validate flags and prompt to select required flags
105+
* @returns {*} {Promise<void>}
122106
* @memberof BranchDiff
123107
*/
124-
async displayBranchDiffTextAndVerbose(branchDiffData: any[], payload: BranchDiffPayload): Promise<void> {
125-
const spinner = cliux.loaderV2('Loading branch differences...');
126-
if (this.options.format === 'compact-text') {
127-
const branchTextRes = parseCompactText(branchDiffData);
128-
cliux.loaderV2('', spinner);
129-
printCompactTextView(branchTextRes);
130-
} else if (this.options.format === 'detailed-text') {
131-
const verboseRes = await parseVerbose(branchDiffData, payload);
132-
cliux.loaderV2('', spinner);
133-
printVerboseTextView(verboseRes);
108+
async validateMandatoryFlags(): Promise<void> {
109+
let baseBranch: string;
110+
if (!this.options.stackAPIKey) {
111+
this.options.stackAPIKey = await askStackAPIKey();
112+
}
134113

135-
exportCSVReport(payload.module, verboseRes, this.options.csvPath);
114+
if (!this.options.baseBranch) {
115+
baseBranch = getbranchConfig(this.options.stackAPIKey);
116+
if (!baseBranch) {
117+
this.options.baseBranch = await askBaseBranch();
118+
} else {
119+
this.options.baseBranch = baseBranch;
120+
}
121+
}
122+
123+
if (!this.options.compareBranch) {
124+
this.options.compareBranch = await askCompareBranch();
125+
}
126+
127+
if (!this.options.module) {
128+
this.options.module = await selectModule();
129+
}
130+
131+
if (this.options.format === 'detailed-text' && !this.options.csvPath) {
132+
this.options.csvPath = process.cwd();
133+
}
134+
135+
if(baseBranch){
136+
cliux.print(`\nBase branch: ${baseBranch}`, { color: 'grey' });
136137
}
137138
}
138139
}

packages/contentstack-branches/src/branch/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@
22
* Business logics can be written inside this directory
33
*/
44

5-
export { default as MergeHandler } from './merge-handler';
65
export { default as BranchDiffHandler } from './diff-handler';
6+
export { default as MergeHandler } from './merge-handler';

0 commit comments

Comments
 (0)