Skip to content

Commit 54c3cbc

Browse files
committed
Fixed the issue of exporting multiple branches
1 parent bad3be7 commit 54c3cbc

File tree

3 files changed

+31
-32
lines changed

3 files changed

+31
-32
lines changed

.talismanrc

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,4 +65,6 @@ fileignoreconfig:
6565
checksum: a4a968a20d5ab7cbc08c266819907541bbf793cc098521a5e810ada3cbacbee6
6666
- filename: packages/contentstack-clone/src/commands/cm/stacks/clone.js
6767
checksum: 433a84a882ea3f12b27127d47d289dfc64dda6b6fc956369f5851daaa57ae493
68-
version: "1.0"
68+
- filename: packages/contentstack-clone/src/lib/util/clone-handler.js
69+
checksum: 89215a2549276407db2dbd25506acabdeb6f9bc53984a7c8b4456cd4df77cf43
70+
version: "1.0"

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

Lines changed: 1 addition & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
const { Command } = require('@contentstack/cli-command');
2-
const { configHandler, flags, isAuthenticated, managementSDKClient, getBranchFromAlias } = require('@contentstack/cli-utilities');
2+
const { configHandler, flags, isAuthenticated, managementSDKClient } = require('@contentstack/cli-utilities');
33
const { CloneHandler } = require('../../../lib/util/clone-handler');
44
const path = require('path');
55
const { rimraf } = require('rimraf');
@@ -83,8 +83,6 @@ class StackCloneCommand extends Command {
8383
}
8484

8585
const managementAPIClient = await managementSDKClient(config);
86-
87-
await this.resolveBranchAliases(config, managementAPIClient);
8886

8987
await this.removeContentDirIfNotEmptyBeforeClone(pathdir); // NOTE remove if folder not empty before clone
9088
this.registerCleanupOnInterrupt(pathdir);
@@ -126,32 +124,7 @@ class StackCloneCommand extends Command {
126124
}
127125
}
128126

129-
async resolveBranchAliases(config, managementAPIClient) {
130-
try {
131-
if (config.sourceStackBranchAlias && !config.sourceStackBranch) {
132-
console.log(`Resolving source branch alias: ${config.sourceStackBranchAlias}`);
133-
const sourceStack = managementAPIClient.stack({ api_key: config.source_stack });
134-
config.sourceStackBranch = await getBranchFromAlias(sourceStack, config.sourceStackBranchAlias);
135-
console.log(`Source branch alias resolved to: ${config.sourceStackBranch}`);
136-
}
137-
138-
if (config.targetStackBranchAlias && !config.targetStackBranch) {
139-
console.log(`Resolving target branch alias: ${config.targetStackBranchAlias}`);
140-
const targetStack = managementAPIClient.stack({ api_key: config.target_stack });
141-
config.targetStackBranch = await getBranchFromAlias(targetStack, config.targetStackBranchAlias);
142-
}
143-
144-
if (!config.sourceStackBranch && !config.sourceStackBranchAlias) {
145-
console.log('No source branch specified, will use default branch');
146-
}
147-
if (!config.targetStackBranch && !config.targetStackBranchAlias) {
148-
console.log('No target branch specified, will use default branch');
149-
}
150127

151-
} catch (error) {
152-
throw error;
153-
}
154-
}
155128

156129
async removeContentDirIfNotEmptyBeforeClone(dir) {
157130
try {

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

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -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,16 +137,24 @@ 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

144+
if (!config.sourceStackBranch && config.sourceStackBranchAlias) {
145+
await this.resolveBranchAliases(true);
146+
return resolve();
147+
}
144148
// NOTE validate if source branch is exist
145149
if (isSource && config.sourceStackBranch) {
146150
await this.validateIfBranchExist(stackAPIClient, true);
147151
return resolve();
148152
}
149153

154+
if (!config.targetStackBranch && config.targetStackBranchAlias) {
155+
await this.resolveBranchAliases();
156+
return resolve();
157+
}
150158
// NOTE Validate target branch is exist
151159
if (!isSource && config.targetStackBranch) {
152160
await this.validateIfBranchExist(stackAPIClient, false);
@@ -272,6 +280,8 @@ class CloneHandler {
272280
return reject('Org not found.');
273281
}
274282
} else {
283+
this.setExectingCommand(2);
284+
await this.handleBranchSelection({ api_key: config.sourceStack });
275285
const exportRes = await cloneCommand.execute(new HandleExportCommand(null, this));
276286
await cloneCommand.execute(new SetBranchCommand(null, this));
277287

@@ -471,7 +481,7 @@ class CloneHandler {
471481
} else {
472482
organizations = await client.organization().fetchAll({ limit: 100 });
473483
}
474-
484+
475485
spinner.succeed('Fetched Organization');
476486
for (const element of organizations.items || [organizations]) {
477487
orgUidList[element.name] = element.uid;
@@ -579,6 +589,20 @@ class CloneHandler {
579589
});
580590
}
581591

592+
async resolveBranchAliases(isSource = false) {
593+
try {
594+
if (isSource) {
595+
const sourceStack = client.stack({ api_key: config.source_stack });
596+
config.sourceStackBranch = await getBranchFromAlias(sourceStack, config.sourceStackBranchAlias);
597+
} else {
598+
const targetStack = client.stack({ api_key: config.target_stack });
599+
config.targetStackBranch = await getBranchFromAlias(targetStack, config.targetStackBranchAlias);
600+
}
601+
} catch (error) {
602+
throw error;
603+
}
604+
}
605+
582606
async cloneTypeSelection() {
583607
console.clear();
584608
return new Promise(async (resolve, reject) => {

0 commit comments

Comments
 (0)