@contentstack/cli-cm-bulk-publish 1.8.2 → 1.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/package.json +5 -4
- package/src/producer/cross-publish.js +14 -1
- package/src/producer/publish-assets.js +14 -0
- package/src/producer/publish-entries.js +14 -0
- package/src/producer/publish-unpublished-env.js +14 -0
- package/src/producer/unpublish.js +14 -1
- package/src/util/generate-bulk-publish-url.js +42 -0
package/README.md
CHANGED
|
@@ -18,7 +18,7 @@ $ npm install -g @contentstack/cli-cm-bulk-publish
|
|
|
18
18
|
$ csdx COMMAND
|
|
19
19
|
running command...
|
|
20
20
|
$ csdx (--version)
|
|
21
|
-
@contentstack/cli-cm-bulk-publish/1.
|
|
21
|
+
@contentstack/cli-cm-bulk-publish/1.10.0 darwin-arm64 node-v22.14.0
|
|
22
22
|
$ csdx --help [COMMAND]
|
|
23
23
|
USAGE
|
|
24
24
|
$ csdx COMMAND
|
package/package.json
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@contentstack/cli-cm-bulk-publish",
|
|
3
3
|
"description": "Contentstack CLI plugin for bulk publish actions",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.10.0",
|
|
5
5
|
"author": "Contentstack",
|
|
6
6
|
"bugs": "https://github.com/contentstack/cli/issues",
|
|
7
7
|
"dependencies": {
|
|
8
|
-
"@contentstack/cli-command": "~1.
|
|
9
|
-
"@contentstack/cli-
|
|
8
|
+
"@contentstack/cli-command": "~1.6.1",
|
|
9
|
+
"@contentstack/cli-config": "~1.15.0",
|
|
10
|
+
"@contentstack/cli-utilities": "~1.13.1",
|
|
10
11
|
"@oclif/core": "^4.3.0",
|
|
11
12
|
"@oclif/plugin-help": "^6.2.28",
|
|
12
13
|
"chalk": "^4.1.2",
|
|
@@ -91,7 +92,7 @@
|
|
|
91
92
|
"scripts": {
|
|
92
93
|
"postpack": "rm -f oclif.manifest.json",
|
|
93
94
|
"prepack": "oclif manifest && oclif readme",
|
|
94
|
-
"test:unit": "
|
|
95
|
+
"test:unit": "mocha --reporter spec --forbid-only \"test/unit/**/*.test.js\"",
|
|
95
96
|
"posttest": "eslint .",
|
|
96
97
|
"version": "oclif readme && git add README.md",
|
|
97
98
|
"clean": "rm -rf ./node_modules tsconfig.build.tsbuildinfo"
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
/* eslint-disable camelcase */
|
|
4
4
|
/* eslint-disable complexity */
|
|
5
5
|
/* eslint-disable max-params */
|
|
6
|
-
const { configHandler } = require('@contentstack/cli-utilities');
|
|
6
|
+
const { configHandler, cliux } = require('@contentstack/cli-utilities');
|
|
7
7
|
const { getQueue } = require('../util/queue');
|
|
8
8
|
const { performBulkPublish, publishEntry, publishAsset, initializeLogger } = require('../consumer/publish');
|
|
9
9
|
const retryFailedLogs = require('../util/retryfailed');
|
|
@@ -15,6 +15,7 @@ const { Command } = require('@contentstack/cli-command');
|
|
|
15
15
|
const command = new Command();
|
|
16
16
|
const { isEmpty } = require('../util');
|
|
17
17
|
const { fetchBulkPublishLimit } = require('../util/common-utility');
|
|
18
|
+
const { generateBulkPublishStatusUrl } = require('../util/generate-bulk-publish-url');
|
|
18
19
|
const VARIANTS_PUBLISH_API_VERSION = '3.2';
|
|
19
20
|
|
|
20
21
|
let bulkPublishSet = [];
|
|
@@ -334,6 +335,18 @@ async function start(
|
|
|
334
335
|
} else if (!isSuccessLogEmpty) {
|
|
335
336
|
console.log(`The success log for this session is stored at ${filePath}.success`);
|
|
336
337
|
}
|
|
338
|
+
|
|
339
|
+
// Generate and display the bulk publish status link
|
|
340
|
+
if (bulkPublish && stack && config) {
|
|
341
|
+
const statusUrl = generateBulkPublishStatusUrl(stack, config);
|
|
342
|
+
if (statusUrl) {
|
|
343
|
+
process.stdout.write('\n');
|
|
344
|
+
process.stdout.write('\x1b[37mHere is the link to check the bulk publish status: \x1b[0m');
|
|
345
|
+
process.stdout.write('\x1b[34m' + statusUrl + '\x1b[0m');
|
|
346
|
+
process.stdout.write('\n');
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
|
|
337
350
|
process.exit(0);
|
|
338
351
|
});
|
|
339
352
|
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
/* eslint-disable no-console */
|
|
2
2
|
/* eslint-disable new-cap */
|
|
3
3
|
/* eslint-disable camelcase */
|
|
4
|
+
const { cliux } = require('@contentstack/cli-utilities');
|
|
4
5
|
const { getQueue } = require('../util/queue');
|
|
5
6
|
const { performBulkPublish, publishAsset, initializeLogger } = require('../consumer/publish');
|
|
6
7
|
const retryFailedLogs = require('../util/retryfailed');
|
|
7
8
|
const { validateFile } = require('../util/fs');
|
|
8
9
|
const { isEmpty } = require('../util');
|
|
9
10
|
const { fetchBulkPublishLimit } = require('../util/common-utility');
|
|
11
|
+
const { generateBulkPublishStatusUrl } = require('../util/generate-bulk-publish-url');
|
|
10
12
|
|
|
11
13
|
const queue = getQueue();
|
|
12
14
|
let logFileName;
|
|
@@ -129,6 +131,18 @@ async function start({ retryFailed, bulkPublish, environments, folderUid, locale
|
|
|
129
131
|
} else if (!isSuccessLogEmpty) {
|
|
130
132
|
console.log(`The success log for this session is stored at ${filePath}.success`);
|
|
131
133
|
}
|
|
134
|
+
|
|
135
|
+
// Generate and display the bulk publish status link
|
|
136
|
+
if (bulkPublish && stack && config) {
|
|
137
|
+
const statusUrl = generateBulkPublishStatusUrl(stack, config);
|
|
138
|
+
if (statusUrl) {
|
|
139
|
+
process.stdout.write('\n');
|
|
140
|
+
process.stdout.write('\x1b[37mHere is the link to check the bulk publish status: \x1b[0m');
|
|
141
|
+
process.stdout.write('\x1b[34m' + statusUrl + '\x1b[0m');
|
|
142
|
+
process.stdout.write('\n');
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
|
|
132
146
|
process.exit(0);
|
|
133
147
|
});
|
|
134
148
|
|
|
@@ -3,12 +3,14 @@
|
|
|
3
3
|
/* eslint-disable camelcase */
|
|
4
4
|
/* eslint-disable max-depth */
|
|
5
5
|
/* eslint-disable no-console */
|
|
6
|
+
const { cliux } = require('@contentstack/cli-utilities');
|
|
6
7
|
const { getQueue } = require('../util/queue');
|
|
7
8
|
const { performBulkPublish, publishEntry, initializeLogger } = require('../consumer/publish');
|
|
8
9
|
const retryFailedLogs = require('../util/retryfailed');
|
|
9
10
|
const { validateFile } = require('../util/fs');
|
|
10
11
|
const { isEmpty } = require('../util');
|
|
11
12
|
const { fetchBulkPublishLimit } = require('../util/common-utility');
|
|
13
|
+
const { generateBulkPublishStatusUrl } = require('../util/generate-bulk-publish-url');
|
|
12
14
|
const VARIANTS_PUBLISH_API_VERSION = '3.2';
|
|
13
15
|
|
|
14
16
|
const queue = getQueue();
|
|
@@ -253,6 +255,18 @@ async function start(
|
|
|
253
255
|
} else if (!isSuccessLogEmpty) {
|
|
254
256
|
console.log(`The success log for this session is stored at ${filePath}.success`);
|
|
255
257
|
}
|
|
258
|
+
|
|
259
|
+
// Generate and display the bulk publish status link
|
|
260
|
+
if (bulkPublish && stack && config) {
|
|
261
|
+
const statusUrl = generateBulkPublishStatusUrl(stack, config);
|
|
262
|
+
if (statusUrl) {
|
|
263
|
+
process.stdout.write('\n');
|
|
264
|
+
process.stdout.write('\x1b[37mHere is the link to check the bulk publish status: \x1b[0m');
|
|
265
|
+
process.stdout.write('\x1b[34m' + statusUrl + '\x1b[0m');
|
|
266
|
+
process.stdout.write('\n');
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
|
|
256
270
|
process.exit(0);
|
|
257
271
|
});
|
|
258
272
|
|
|
@@ -4,12 +4,14 @@
|
|
|
4
4
|
/* eslint-disable no-console */
|
|
5
5
|
/* eslint-disable new-cap */
|
|
6
6
|
/* eslint-disable camelcase */
|
|
7
|
+
const { cliux } = require('@contentstack/cli-utilities');
|
|
7
8
|
const { getQueue } = require('../util/queue');
|
|
8
9
|
const { performBulkPublish, publishEntry, initializeLogger } = require('../consumer/publish');
|
|
9
10
|
const retryFailedLogs = require('../util/retryfailed');
|
|
10
11
|
const { validateFile } = require('../util/fs');
|
|
11
12
|
const { isEmpty } = require('../util');
|
|
12
13
|
const { fetchBulkPublishLimit } = require('../util/common-utility');
|
|
14
|
+
const { generateBulkPublishStatusUrl } = require('../util/generate-bulk-publish-url');
|
|
13
15
|
|
|
14
16
|
const queue = getQueue();
|
|
15
17
|
let skipCount;
|
|
@@ -142,6 +144,18 @@ async function start({ sourceEnv, environments, locale, contentTypes, bulkPublis
|
|
|
142
144
|
} else if (!isSuccessLogEmpty) {
|
|
143
145
|
console.log(`The success log for this session is stored at ${filePath}.success`);
|
|
144
146
|
}
|
|
147
|
+
|
|
148
|
+
// Generate and display the bulk publish status link
|
|
149
|
+
if (bulkPublish && stack && config) {
|
|
150
|
+
const statusUrl = generateBulkPublishStatusUrl(stack, config);
|
|
151
|
+
if (statusUrl) {
|
|
152
|
+
process.stdout.write('\n');
|
|
153
|
+
process.stdout.write('\x1b[37mHere is the link to check the bulk unpublish status: \x1b[0m');
|
|
154
|
+
process.stdout.write('\x1b[34m' + statusUrl + '\x1b[0m');
|
|
155
|
+
process.stdout.write('\n');
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
|
|
145
159
|
process.exit(0);
|
|
146
160
|
});
|
|
147
161
|
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
/* eslint-disable complexity */
|
|
4
4
|
/* eslint-disable no-console */
|
|
5
5
|
/* eslint-disable camelcase */
|
|
6
|
-
const { configHandler } = require('@contentstack/cli-utilities');
|
|
6
|
+
const { configHandler, cliux } = require('@contentstack/cli-utilities');
|
|
7
7
|
const { getQueue } = require('../util/queue');
|
|
8
8
|
const { performBulkUnPublish, UnpublishEntry, UnpublishAsset, initializeLogger } = require('../consumer/publish');
|
|
9
9
|
const retryFailedLogs = require('../util/retryfailed');
|
|
@@ -15,6 +15,7 @@ const { Command } = require('@contentstack/cli-command');
|
|
|
15
15
|
const command = new Command();
|
|
16
16
|
const { isEmpty } = require('../util');
|
|
17
17
|
const { fetchBulkPublishLimit } = require('../util/common-utility');
|
|
18
|
+
const { generateBulkPublishStatusUrl } = require('../util/generate-bulk-publish-url');
|
|
18
19
|
const VARIANTS_UNPUBLISH_API_VERSION = '3.2';
|
|
19
20
|
const delay = (ms) => new Promise((res) => setTimeout(res, ms));
|
|
20
21
|
|
|
@@ -325,6 +326,18 @@ async function start(
|
|
|
325
326
|
} else if (!isSuccessLogEmpty) {
|
|
326
327
|
console.log(`The success log for this session is stored at ${filePath}.success`);
|
|
327
328
|
}
|
|
329
|
+
|
|
330
|
+
// Generate and display the bulk publish status link
|
|
331
|
+
if (bulkUnpublish && stack && config) {
|
|
332
|
+
const statusUrl = generateBulkPublishStatusUrl(stack, config);
|
|
333
|
+
if (statusUrl) {
|
|
334
|
+
process.stdout.write('\n');
|
|
335
|
+
process.stdout.write('\x1b[37mHere is the link to check the bulk unpublish status: \x1b[0m');
|
|
336
|
+
process.stdout.write('\x1b[34m' + statusUrl + '\x1b[0m');
|
|
337
|
+
process.stdout.write('\n');
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
|
|
328
341
|
process.exit(0);
|
|
329
342
|
});
|
|
330
343
|
if (includeVariants) {
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
const { regions } = require('@contentstack/cli-config/lib/utils/region-handler');
|
|
2
|
+
const { configHandler } = require('@contentstack/cli-utilities');
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Get the appropriate app URL based on the host
|
|
6
|
+
* Uses the configured region from configHandler to get the uiHost
|
|
7
|
+
* @param {string} host - The host URL
|
|
8
|
+
* @returns {string} The app URL
|
|
9
|
+
*/
|
|
10
|
+
function getAppUrlFromHost(host) {
|
|
11
|
+
// Get the current region from configHandler
|
|
12
|
+
const currentRegion = configHandler.get('region');
|
|
13
|
+
if (currentRegion && currentRegion.uiHost) {
|
|
14
|
+
return currentRegion.uiHost;
|
|
15
|
+
}
|
|
16
|
+
// Default to NA region if no region is configured
|
|
17
|
+
return regions['AWS-NA'].uiHost;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Generate the bulk publish status URL based on stack configuration
|
|
22
|
+
* @param {Object} stack - Stack object containing api_key and host
|
|
23
|
+
* @param {Object} config - Config object containing stackApiKey, branch, and host
|
|
24
|
+
* @returns {string|null} The status URL or null if apiKey is not available
|
|
25
|
+
*/
|
|
26
|
+
function generateBulkPublishStatusUrl(stack, config) {
|
|
27
|
+
const apiKey = stack?.api_key || config?.stackApiKey;
|
|
28
|
+
if (!apiKey) {
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
const branch = config?.branch;
|
|
32
|
+
const host = stack?.host || config?.host || 'app.contentstack.com';
|
|
33
|
+
const appUrl = getAppUrlFromHost(host);
|
|
34
|
+
|
|
35
|
+
// Only include branch parameter if branch is not empty
|
|
36
|
+
const branchParam = branch ? `?branch=${branch}` : '';
|
|
37
|
+
return `${appUrl}/#!/stack/${apiKey}/publish-queue${branchParam}`;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
module.exports = {
|
|
41
|
+
generateBulkPublishStatusUrl,
|
|
42
|
+
};
|