Skip to content

Commit 0bb49e9

Browse files
authored
Merge pull request #1768 from contentstack/fix/DX-592
fix: Added version to the asset and entries that will be published using bulk publish
2 parents 5d0a0f8 + 2b04815 commit 0bb49e9

File tree

6 files changed

+77
-36
lines changed

6 files changed

+77
-36
lines changed

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/contentstack-bulk-publish/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ $ npm install -g @contentstack/cli-cm-bulk-publish
1818
$ csdx COMMAND
1919
running command...
2020
$ csdx (--version)
21-
@contentstack/cli-cm-bulk-publish/1.7.2 darwin-arm64 node-v22.14.0
21+
@contentstack/cli-cm-bulk-publish/1.7.3 darwin-arm64 node-v23.6.0
2222
$ csdx --help [COMMAND]
2323
USAGE
2424
$ csdx COMMAND

packages/contentstack-bulk-publish/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "@contentstack/cli-cm-bulk-publish",
33
"description": "Contentstack CLI plugin for bulk publish actions",
4-
"version": "1.7.2",
4+
"version": "1.7.3",
55
"author": "Contentstack",
66
"bugs": "https://github.com/contentstack/cli/issues",
77
"dependencies": {

packages/contentstack-bulk-publish/src/consumer/publish.js

Lines changed: 71 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -32,22 +32,55 @@ function removePublishDetails(elements) {
3232
return elements;
3333
}
3434

35-
function displayEntriesDetails(sanitizedData) {
36-
sanitizedData.forEach((entry) => {
37-
console.log(chalk.green(`Entry UID '${entry.uid}' of CT '${entry.content_type}' in locale '${entry.locale}'`));
38-
});
35+
function displayEntriesDetails(sanitizedData, action, mapping = []) {
36+
if (action === 'bulk_publish') {
37+
sanitizedData.forEach((entry) => {
38+
entry?.publish_details.forEach((pd) => {
39+
if (Object.keys(mapping).includes(pd.environment)) {
40+
console.log(
41+
chalk.green(
42+
`Entry UID '${entry.uid}' of CT '${entry.content_type}' in locale '${entry.locale}' version '${pd.version}' in environment '${pd.environment}'`,
43+
),
44+
)
45+
}
46+
});
47+
if(!Array.isArray(entry.publish_details)){
48+
console.log(chalk.green(`Entry UID '${entry.uid}' of CT '${entry.content_type}' in locale '${entry.locale}'`));
49+
}
50+
});
51+
} else if (action === 'bulk_unpublish') {
52+
sanitizedData.forEach((entry) => {
53+
console.log(chalk.green(`Entry UID '${entry.uid}' of CT '${entry.content_type}' in locale '${entry.locale}'`));
54+
});
55+
}
3956
}
4057

41-
function displayAssetsDetails(sanitizedData) {
42-
sanitizedData.forEach((asset) => {
43-
console.log(
44-
chalk.green(
45-
`Asset UID '${asset.uid}' ${asset.version ? `and version '${asset.version}'` : ''} ${
46-
asset.locale ? `in locale '${asset.locale}'` : ''
47-
}`,
48-
),
49-
);
50-
});
58+
function displayAssetsDetails(sanitizedData, action, mapping) {
59+
if (action === 'bulk_publish') {
60+
sanitizedData.forEach((asset) => {
61+
asset?.publish_details.forEach((pd) => {
62+
if (Object.keys(mapping).includes(pd.environment)) {
63+
console.log(
64+
chalk.green(
65+
`Asset UID '${asset.uid}' ${pd.version ? `and version '${pd.version}'` : ''} ${
66+
asset.locale ? `in locale '${asset.locale}'` : ''
67+
} in environment ${pd.environment}`,
68+
),
69+
);
70+
}
71+
});
72+
});
73+
} else if (action === 'bulk_unpublish') {
74+
sanitizedData.forEach((asset) => {
75+
console.log(
76+
chalk.green(
77+
`Asset UID '${asset.uid}' ${asset.version ? `and version '${asset.version}'` : ''} ${
78+
asset.locale ? `in locale '${asset.locale}'` : ''
79+
}`,
80+
),
81+
);
82+
});
83+
}
5184
}
5285
async function publishEntry(data, _config, queue) {
5386
const lang = [];
@@ -230,13 +263,29 @@ async function UnpublishAsset(data, _config, queue) {
230263
});
231264
}
232265

266+
async function getEnvironment(stack, environment) {
267+
const mapping = {};
268+
if (Array.isArray(environment) && environment.length) {
269+
for (let i = 0; i < environment.length; i++) {
270+
const key = await stack.environment(environment[i]).fetch();
271+
console.log(key);
272+
mapping[key.uid] = environment[i];
273+
}
274+
} else {
275+
const key = await stack.environment(environment[i]).fetch();
276+
mapping[key.uid] = environment[i];
277+
}
278+
return mapping;
279+
}
280+
233281
async function performBulkPublish(data, _config, queue) {
234282
// add validation for user uid
235283
// if user not logged in, then user uid won't be available and NRP too won't work
236284
let conf;
237285
const bulkPublishObj = data.obj;
238286
const stack = bulkPublishObj.stack;
239287
let payload = {};
288+
const mapping = await getEnvironment(stack, bulkPublishObj.environments);
240289
switch (bulkPublishObj.Type) {
241290
case 'entry':
242291
conf = {
@@ -261,12 +310,11 @@ async function performBulkPublish(data, _config, queue) {
261310
.publish(payload)
262311
.then((bulkPublishEntriesResponse) => {
263312
if (!bulkPublishEntriesResponse.error_message) {
264-
const sanitizedData = removePublishDetails(bulkPublishObj.entries);
265313
console.log(
266314
chalk.green(`Bulk entries sent for publish`),
267315
bulkPublishEntriesResponse.job_id ? chalk.yellow(`job_id: ${bulkPublishEntriesResponse.job_id}`) : '',
268316
);
269-
displayEntriesDetails(sanitizedData);
317+
displayEntriesDetails(bulkPublishObj.entries, 'bulk_publish', mapping);
270318
delete bulkPublishObj.stack;
271319
addLogs(
272320
logger,
@@ -284,8 +332,7 @@ async function performBulkPublish(data, _config, queue) {
284332
} else {
285333
delete bulkPublishObj.stack;
286334
console.log(chalk.red(`Bulk entries failed to publish with error ${formatError(error)}`));
287-
let sanitizedData = removePublishDetails(bulkPublishObj.entries);
288-
displayEntriesDetails(sanitizedData);
335+
displayEntriesDetails(bulkPublishObj.entries, 'bulk_publish', mapping);
289336
addLogs(
290337
logger,
291338
{ options: bulkPublishObj, api_key: stack.stackHeaders.api_key, alias: stack.alias, host: stack.host },
@@ -322,8 +369,7 @@ async function performBulkPublish(data, _config, queue) {
322369
bulkPublishAssetsResponse.job_id ? chalk.yellow(`job_id: ${bulkPublishAssetsResponse.job_id}`) : '',
323370
),
324371
);
325-
let sanitizedData = removePublishDetails(bulkPublishObj.assets);
326-
displayAssetsDetails(sanitizedData);
372+
displayAssetsDetails(bulkPublishObj.assets, 'bulk_publish', mapping);
327373
delete bulkPublishObj.stack;
328374
addLogs(
329375
logger,
@@ -342,8 +388,7 @@ async function performBulkPublish(data, _config, queue) {
342388
delete bulkPublishObj.stack;
343389
console.log(chalk.red(`Bulk assets failed to publish with error ${formatError(error)}`));
344390

345-
let sanitizedData = removePublishDetails(bulkPublishObj.assets);
346-
displayAssetsDetails(sanitizedData);
391+
displayAssetsDetails(sanitizedData, 'bulk_publish', mapping);
347392
addLogs(
348393
logger,
349394
{ options: bulkPublishObj, api_key: stack.stackHeaders.api_key, alias: stack.alias, host: stack.host },
@@ -395,8 +440,7 @@ async function performBulkUnPublish(data, _config, queue) {
395440
: '',
396441
),
397442
);
398-
let sanitizedData = removePublishDetails(bulkUnPublishObj.entries);
399-
displayEntriesDetails(sanitizedData);
443+
displayEntriesDetails(bulkUnPublishObj.entries, 'bulk_unpublish');
400444
addLogs(
401445
logger,
402446
{ options: bulkUnPublishObj, api_key: stack.stackHeaders.api_key, alias: stack.alias, host: stack.host },
@@ -413,8 +457,7 @@ async function performBulkUnPublish(data, _config, queue) {
413457
} else {
414458
delete bulkUnPublishObj.stack;
415459
console.log(chalk.red(`Bulk entries failed to Unpublish with error ${formatError(error)}`));
416-
let sanitizedData = removePublishDetails(bulkUnPublishObj.entries);
417-
displayEntriesDetails(sanitizedData);
460+
displayEntriesDetails(bulkUnPublishObj.entries, 'bulk_unpublish');
418461
addLogs(
419462
logger,
420463
{ options: bulkUnPublishObj, api_key: stack.stackHeaders.api_key, alias: stack.alias, host: stack.host },
@@ -446,14 +489,13 @@ async function performBulkUnPublish(data, _config, queue) {
446489
.then((bulkUnPublishAssetsResponse) => {
447490
if (!bulkUnPublishAssetsResponse.error_message) {
448491
delete bulkUnPublishObj.stack;
449-
let sanitizedData = removePublishDetails(bulkUnPublishObj.assets);
450492
console.log(
451493
chalk.green(
452494
`Bulk assets sent for Unpublish`,
453495
bulkUnPublishAssetsResponse.job_id ? chalk.yellow(`job_id: ${bulkUnPublishAssetsResponse.job_id}`) : '',
454496
),
455497
);
456-
displayAssetsDetails(sanitizedData);
498+
displayAssetsDetails(bulkUnPublishObj.assets, 'bulk_unpublish');
457499
addLogs(
458500
logger,
459501
{ options: bulkUnPublishObj, api_key: stack.stackHeaders.api_key, alias: stack.alias, host: stack.host },
@@ -470,8 +512,7 @@ async function performBulkUnPublish(data, _config, queue) {
470512
} else {
471513
delete bulkUnPublishObj.stack;
472514
console.log(chalk.red(`Bulk assets failed to Unpublish with error ${formatError(error)}`));
473-
let sanitizedData = removePublishDetails(bulkUnPublishObj.assets);
474-
displayAssetsDetails(sanitizedData);
515+
displayAssetsDetails(bulkUnPublishObj.assets, 'bulk_unpublish');
475516
addLogs(
476517
logger,
477518
{ options: bulkUnPublishObj, api_key: stack.stackHeaders.api_key, alias: stack.alias, host: stack.host },

packages/contentstack/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
"@contentstack/cli-auth": "~1.3.24",
2727
"@contentstack/cli-cm-bootstrap": "~1.13.2",
2828
"@contentstack/cli-cm-branches": "~1.3.0",
29-
"@contentstack/cli-cm-bulk-publish": "~1.7.2",
29+
"@contentstack/cli-cm-bulk-publish": "~1.7.3",
3030
"@contentstack/cli-cm-clone": "~1.13.2",
3131
"@contentstack/cli-cm-export": "~1.15.0",
3232
"@contentstack/cli-cm-export-to-csv": "~1.7.3",

pnpm-lock.yaml

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)