@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 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.8.2 darwin-x64 node-v22.17.0
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.8.2",
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.5.0",
9
- "@contentstack/cli-utilities": "~1.12.0",
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": "nyc mocha --forbid-only \"test/unit/**/*.test.js\"",
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
+ };