Skip to content
Merged
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
12 changes: 9 additions & 3 deletions .talismanrc
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
fileignoreconfig:
- filename: package-lock.json
checksum: 5e581216413057e2c391cd81ab255d80814c552714e778695c5cf01e30977c0a
checksum: e18f2c44cd17fe67afa33290fc6e3ebd8e77be4cd85541b967792a03ea6b4279
- filename: pnpm-lock.yaml
checksum: 0ff0cc1297c355f24d6942c01a7699b5c1ac8759d0b8c3073825241c8366a999
checksum: 8ac9a74de5b8971d85a0471444233205d66fdc90ab8f68ab74053582bbb274f7
- filename: packages/contentstack-import-setup/test/unit/backup-handler.test.ts
checksum: 0582d62b88834554cf12951c8690a73ef3ddbb78b82d2804d994cf4148e1ef93
- filename: packages/contentstack-import-setup/test/config.json
Expand Down Expand Up @@ -75,4 +75,10 @@ fileignoreconfig:
checksum: c435ceaa709a7504da303a6ea674e07a89030d8ad4152e7917cd17e7f3e58052
- filename: packages/contentstack-bootstrap/src/config.ts
checksum: 65d300dc729fb84f5446c0b14921555db01fe5c90be3d297e3d0418a37b3696a
version: "1.0"
- filename: packages/contentstack-clone/src/commands/cm/stacks/clone.js
checksum: 433a84a882ea3f12b27127d47d289dfc64dda6b6fc956369f5851daaa57ae493
- filename: packages/contentstack-clone/src/lib/util/clone-handler.js
checksum: 89215a2549276407db2dbd25506acabdeb6f9bc53984a7c8b4456cd4df77cf43
- filename: packages/contentstack-bulk-publish/src/util/generate-bulk-publish-url.js
checksum: 5f7c1e2fac3e7fab21e861d609c54ca7191ee09fd076dd0adc66604043bf7a43
version: "1.0"
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,8 @@ class StackCloneCommand extends Command {
config.importWebhookStatus = importWebhookStatus;
}

const managementAPIClient = await managementSDKClient(config);

await this.removeContentDirIfNotEmptyBeforeClone(pathdir); // NOTE remove if folder not empty before clone
this.registerCleanupOnInterrupt(pathdir);

Expand All @@ -90,7 +92,6 @@ class StackCloneCommand extends Command {
config.cdn = this.cdaHost;
config.pathDir = pathdir;
const cloneHandler = new CloneHandler(config);
const managementAPIClient = await managementSDKClient(config);
cloneHandler.setClient(managementAPIClient);
cloneHandler.execute().catch((error) => {
console.log(error);
Expand Down Expand Up @@ -123,6 +124,8 @@ class StackCloneCommand extends Command {
}
}



async removeContentDirIfNotEmptyBeforeClone(dir) {
try {
const dirNotEmpty = readdirSync(dir).length;
Expand Down
44 changes: 29 additions & 15 deletions packages/contentstack-clone/src/lib/util/clone-handler.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ let { default: importCmd } = require('@contentstack/cli-cm-import');
const { CustomAbortController } = require('./abort-controller');
const prompt = require('prompt');
const colors = require('@colors/colors/safe');
const cloneDeep = require("lodash/cloneDeep")
const cloneDeep = require('lodash/cloneDeep');

const {
HandleOrgCommand,
Expand All @@ -21,7 +21,7 @@ const {
Clone,
HandleBranchCommand,
} = require('../helpers/command-helpers');
const { configHandler } = require('@contentstack/cli-utilities')
const { configHandler, getBranchFromAlias } = require('@contentstack/cli-utilities');

let client = {};
let config;
Expand Down Expand Up @@ -137,20 +137,26 @@ class CloneHandler {
let spinner;
try {
const stackAPIClient = client.stack({
api_key: config.target_stack ? config.target_stack : config.source_stack,
api_key: isSource ? config.source_stack : config.target_stack,
management_token: config.management_token,
});

// NOTE validate if source branch is exist
if (isSource && config.sourceStackBranch) {
await this.validateIfBranchExist(stackAPIClient, true);
return resolve();
} else if(isSource && config.sourceStackBranchAlias) {
await this.resolveBranchAliases(true);
return resolve();
}

// NOTE Validate target branch is exist
if (!isSource && config.targetStackBranch) {
await this.validateIfBranchExist(stackAPIClient, false);
return resolve();
} else if (!isSource && config.targetStackBranchAlias) {
await this.resolveBranchAliases();
return resolve();
}
spinner = ora('Fetching Branches').start();
const result = await stackAPIClient
Expand Down Expand Up @@ -272,6 +278,8 @@ class CloneHandler {
return reject('Org not found.');
}
} else {
this.setExectingCommand(2);
await this.handleBranchSelection({ api_key: config.sourceStack });
const exportRes = await cloneCommand.execute(new HandleExportCommand(null, this));
await cloneCommand.execute(new SetBranchCommand(null, this));

Expand Down Expand Up @@ -471,7 +479,7 @@ class CloneHandler {
} else {
organizations = await client.organization().fetchAll({ limit: 100 });
}

spinner.succeed('Fetched Organization');
for (const element of organizations.items || [organizations]) {
orgUidList[element.name] = element.uid;
Expand Down Expand Up @@ -579,6 +587,20 @@ class CloneHandler {
});
}

async resolveBranchAliases(isSource = false) {
try {
if (isSource) {
const sourceStack = client.stack({ api_key: config.source_stack });
config.sourceStackBranch = await getBranchFromAlias(sourceStack, config.sourceStackBranchAlias);
} else {
const targetStack = client.stack({ api_key: config.target_stack });
config.targetStackBranch = await getBranchFromAlias(targetStack, config.targetStackBranchAlias);
}
} catch (error) {
throw error;
}
}

async cloneTypeSelection() {
console.clear();
return new Promise(async (resolve, reject) => {
Expand Down Expand Up @@ -618,7 +640,7 @@ class CloneHandler {
async cmdExport() {
return new Promise((resolve, reject) => {
// Creating export specific config by merging external configurations
let exportConfig = Object.assign({}, cloneDeep(config), {...config?.export});
let exportConfig = Object.assign({}, cloneDeep(config), { ...config?.export });
delete exportConfig.import;
delete exportConfig.export;

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

if (!exportConfig.sourceStackBranch && exportConfig.sourceStackBranchAlias) {
cmd.push('--branch-alias', exportConfig.sourceStackBranchAlias);
}

if (exportConfig.forceStopMarketplaceAppsPrompt) cmd.push('-y');

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

Expand All @@ -667,10 +685,6 @@ class CloneHandler {
if (importConfig.targetStackBranch) {
cmd.push('--branch', importConfig.targetStackBranch);
}

if (!importConfig.targetStackBranch && importConfig.targetStackBranchAlias) {
cmd.push('--branch-alias', importConfig.targetStackBranchAlias);
}
if (importConfig.importWebhookStatus) {
cmd.push('--import-webhook-status', importConfig.importWebhookStatus);
}
Expand All @@ -681,7 +695,7 @@ class CloneHandler {

fs.writeFileSync(path.join(__dirname, 'dummyConfig.json'), JSON.stringify(importConfig));
await importCmd.run(cmd);
fs.writeFileSync(path.join(__dirname, 'dummyConfig.json'), JSON.stringify({}))
fs.writeFileSync(path.join(__dirname, 'dummyConfig.json'), JSON.stringify({}));
return resolve();
});
}
Expand Down
1 change: 1 addition & 0 deletions packages/contentstack-import/src/utils/setup-branch.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ export const setupBranchConfig = async (

if (config.branchAlias) {
config.branchName = await getBranchFromAlias(stackAPIClient, config.branchAlias);
return;
}
try {
const branches = await stackAPIClient
Expand Down
Loading