Skip to content

Commit a30e00b

Browse files
authored
Merge pull request #2095 from contentstack/fix/clone-bug
DX - 3484 - Fixed Clone command flow and Import flow for checking the branch enabled stack
2 parents fa33e52 + 463678d commit a30e00b

File tree

4 files changed

+43
-19
lines changed

4 files changed

+43
-19
lines changed

.talismanrc

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
fileignoreconfig:
22
- filename: package-lock.json
3-
checksum: 5e581216413057e2c391cd81ab255d80814c552714e778695c5cf01e30977c0a
3+
checksum: e18f2c44cd17fe67afa33290fc6e3ebd8e77be4cd85541b967792a03ea6b4279
44
- filename: pnpm-lock.yaml
5-
checksum: 0ff0cc1297c355f24d6942c01a7699b5c1ac8759d0b8c3073825241c8366a999
5+
checksum: 8ac9a74de5b8971d85a0471444233205d66fdc90ab8f68ab74053582bbb274f7
66
- filename: packages/contentstack-import-setup/test/unit/backup-handler.test.ts
77
checksum: 0582d62b88834554cf12951c8690a73ef3ddbb78b82d2804d994cf4148e1ef93
88
- filename: packages/contentstack-import-setup/test/config.json
@@ -75,4 +75,10 @@ fileignoreconfig:
7575
checksum: c435ceaa709a7504da303a6ea674e07a89030d8ad4152e7917cd17e7f3e58052
7676
- filename: packages/contentstack-bootstrap/src/config.ts
7777
checksum: 65d300dc729fb84f5446c0b14921555db01fe5c90be3d297e3d0418a37b3696a
78-
version: "1.0"
78+
- filename: packages/contentstack-clone/src/commands/cm/stacks/clone.js
79+
checksum: 433a84a882ea3f12b27127d47d289dfc64dda6b6fc956369f5851daaa57ae493
80+
- filename: packages/contentstack-clone/src/lib/util/clone-handler.js
81+
checksum: 89215a2549276407db2dbd25506acabdeb6f9bc53984a7c8b4456cd4df77cf43
82+
- filename: packages/contentstack-bulk-publish/src/util/generate-bulk-publish-url.js
83+
checksum: 5f7c1e2fac3e7fab21e861d609c54ca7191ee09fd076dd0adc66604043bf7a43
84+
version: "1.0"

packages/contentstack-clone/src/commands/cm/stacks/clone.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,8 @@ class StackCloneCommand extends Command {
8282
config.importWebhookStatus = importWebhookStatus;
8383
}
8484

85+
const managementAPIClient = await managementSDKClient(config);
86+
8587
await this.removeContentDirIfNotEmptyBeforeClone(pathdir); // NOTE remove if folder not empty before clone
8688
this.registerCleanupOnInterrupt(pathdir);
8789

@@ -90,7 +92,6 @@ class StackCloneCommand extends Command {
9092
config.cdn = this.cdaHost;
9193
config.pathDir = pathdir;
9294
const cloneHandler = new CloneHandler(config);
93-
const managementAPIClient = await managementSDKClient(config);
9495
cloneHandler.setClient(managementAPIClient);
9596
cloneHandler.execute().catch((error) => {
9697
console.log(error);
@@ -123,6 +124,8 @@ class StackCloneCommand extends Command {
123124
}
124125
}
125126

127+
128+
126129
async removeContentDirIfNotEmptyBeforeClone(dir) {
127130
try {
128131
const dirNotEmpty = readdirSync(dir).length;

packages/contentstack-clone/src/lib/util/clone-handler.js

Lines changed: 29 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ let { default: importCmd } = require('@contentstack/cli-cm-import');
88
const { CustomAbortController } = require('./abort-controller');
99
const prompt = require('prompt');
1010
const colors = require('@colors/colors/safe');
11-
const cloneDeep = require("lodash/cloneDeep")
11+
const cloneDeep = require('lodash/cloneDeep');
1212

1313
const {
1414
HandleOrgCommand,
@@ -21,7 +21,7 @@ const {
2121
Clone,
2222
HandleBranchCommand,
2323
} = require('../helpers/command-helpers');
24-
const { configHandler } = require('@contentstack/cli-utilities')
24+
const { configHandler, getBranchFromAlias } = require('@contentstack/cli-utilities');
2525

2626
let client = {};
2727
let config;
@@ -137,20 +137,26 @@ class CloneHandler {
137137
let spinner;
138138
try {
139139
const stackAPIClient = client.stack({
140-
api_key: config.target_stack ? config.target_stack : config.source_stack,
140+
api_key: isSource ? config.source_stack : config.target_stack,
141141
management_token: config.management_token,
142142
});
143143

144144
// NOTE validate if source branch is exist
145145
if (isSource && config.sourceStackBranch) {
146146
await this.validateIfBranchExist(stackAPIClient, true);
147147
return resolve();
148+
} else if(isSource && config.sourceStackBranchAlias) {
149+
await this.resolveBranchAliases(true);
150+
return resolve();
148151
}
149152

150153
// NOTE Validate target branch is exist
151154
if (!isSource && config.targetStackBranch) {
152155
await this.validateIfBranchExist(stackAPIClient, false);
153156
return resolve();
157+
} else if (!isSource && config.targetStackBranchAlias) {
158+
await this.resolveBranchAliases();
159+
return resolve();
154160
}
155161
spinner = ora('Fetching Branches').start();
156162
const result = await stackAPIClient
@@ -272,6 +278,8 @@ class CloneHandler {
272278
return reject('Org not found.');
273279
}
274280
} else {
281+
this.setExectingCommand(2);
282+
await this.handleBranchSelection({ api_key: config.sourceStack });
275283
const exportRes = await cloneCommand.execute(new HandleExportCommand(null, this));
276284
await cloneCommand.execute(new SetBranchCommand(null, this));
277285

@@ -471,7 +479,7 @@ class CloneHandler {
471479
} else {
472480
organizations = await client.organization().fetchAll({ limit: 100 });
473481
}
474-
482+
475483
spinner.succeed('Fetched Organization');
476484
for (const element of organizations.items || [organizations]) {
477485
orgUidList[element.name] = element.uid;
@@ -579,6 +587,20 @@ class CloneHandler {
579587
});
580588
}
581589

590+
async resolveBranchAliases(isSource = false) {
591+
try {
592+
if (isSource) {
593+
const sourceStack = client.stack({ api_key: config.source_stack });
594+
config.sourceStackBranch = await getBranchFromAlias(sourceStack, config.sourceStackBranchAlias);
595+
} else {
596+
const targetStack = client.stack({ api_key: config.target_stack });
597+
config.targetStackBranch = await getBranchFromAlias(targetStack, config.targetStackBranchAlias);
598+
}
599+
} catch (error) {
600+
throw error;
601+
}
602+
}
603+
582604
async cloneTypeSelection() {
583605
console.clear();
584606
return new Promise(async (resolve, reject) => {
@@ -618,7 +640,7 @@ class CloneHandler {
618640
async cmdExport() {
619641
return new Promise((resolve, reject) => {
620642
// Creating export specific config by merging external configurations
621-
let exportConfig = Object.assign({}, cloneDeep(config), {...config?.export});
643+
let exportConfig = Object.assign({}, cloneDeep(config), { ...config?.export });
622644
delete exportConfig.import;
623645
delete exportConfig.export;
624646

@@ -634,10 +656,6 @@ class CloneHandler {
634656
cmd.push('--branch', exportConfig.sourceStackBranch);
635657
}
636658

637-
if (!exportConfig.sourceStackBranch && exportConfig.sourceStackBranchAlias) {
638-
cmd.push('--branch-alias', exportConfig.sourceStackBranchAlias);
639-
}
640-
641659
if (exportConfig.forceStopMarketplaceAppsPrompt) cmd.push('-y');
642660

643661
cmd.push('-c');
@@ -652,7 +670,7 @@ class CloneHandler {
652670
async cmdImport() {
653671
return new Promise(async (resolve, _reject) => {
654672
// Creating export specific config by merging external configurations
655-
let importConfig = Object.assign({}, cloneDeep(config), {...config?.import});
673+
let importConfig = Object.assign({}, cloneDeep(config), { ...config?.import });
656674
delete importConfig.import;
657675
delete importConfig.export;
658676

@@ -667,10 +685,6 @@ class CloneHandler {
667685
if (importConfig.targetStackBranch) {
668686
cmd.push('--branch', importConfig.targetStackBranch);
669687
}
670-
671-
if (!importConfig.targetStackBranch && importConfig.targetStackBranchAlias) {
672-
cmd.push('--branch-alias', importConfig.targetStackBranchAlias);
673-
}
674688
if (importConfig.importWebhookStatus) {
675689
cmd.push('--import-webhook-status', importConfig.importWebhookStatus);
676690
}
@@ -681,7 +695,7 @@ class CloneHandler {
681695

682696
fs.writeFileSync(path.join(__dirname, 'dummyConfig.json'), JSON.stringify(importConfig));
683697
await importCmd.run(cmd);
684-
fs.writeFileSync(path.join(__dirname, 'dummyConfig.json'), JSON.stringify({}))
698+
fs.writeFileSync(path.join(__dirname, 'dummyConfig.json'), JSON.stringify({}));
685699
return resolve();
686700
});
687701
}

packages/contentstack-import/src/utils/setup-branch.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ export const setupBranchConfig = async (
1313

1414
if (config.branchAlias) {
1515
config.branchName = await getBranchFromAlias(stackAPIClient, config.branchAlias);
16+
return;
1617
}
1718
try {
1819
const branches = await stackAPIClient

0 commit comments

Comments
 (0)