@contentstack/cli-cm-bulk-publish 1.4.9 → 1.6.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 +11 -11
- package/src/producer/add-fields.js +9 -5
- package/src/producer/cross-publish.js +13 -9
- package/src/producer/nonlocalized-field-changes.js +8 -5
- package/src/producer/publish-assets.js +22 -7
- package/src/producer/publish-edits.js +7 -5
- package/src/producer/publish-entries.js +36 -8
- package/src/producer/publish-unpublished-env.js +7 -5
- package/src/producer/revert.js +14 -12
- package/src/producer/unpublish.js +13 -9
- package/src/util/client.js +7 -1
- package/src/util/common-utility.js +30 -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.6.0 darwin-arm64 node-v22.2.0
|
|
22
22
|
$ csdx --help [COMMAND]
|
|
23
23
|
USAGE
|
|
24
24
|
$ csdx COMMAND
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
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.6.0",
|
|
5
5
|
"author": "Contentstack",
|
|
6
6
|
"bugs": "https://github.com/contentstack/cli/issues",
|
|
7
7
|
"dependencies": {
|
|
@@ -9,23 +9,23 @@
|
|
|
9
9
|
"@contentstack/cli-utilities": "~1.8.0",
|
|
10
10
|
"bluebird": "^3.7.2",
|
|
11
11
|
"chalk": "^4.1.2",
|
|
12
|
-
"dotenv": "^16.
|
|
13
|
-
"inquirer": "8.2.
|
|
14
|
-
"lodash": "^4.17.
|
|
12
|
+
"dotenv": "^16.4.5",
|
|
13
|
+
"inquirer": "8.2.6",
|
|
14
|
+
"lodash": "^4.17.21",
|
|
15
15
|
"mkdirp": "^1.0.4",
|
|
16
|
-
"nock": "^13.
|
|
17
|
-
"winston": "^3.
|
|
16
|
+
"nock": "^13.5.5",
|
|
17
|
+
"winston": "^3.15.0"
|
|
18
18
|
},
|
|
19
19
|
"devDependencies": {
|
|
20
20
|
"@oclif/test": "^2.5.6",
|
|
21
|
-
"chai": "^4.
|
|
22
|
-
"eslint": "^8.
|
|
21
|
+
"chai": "^4.5.0",
|
|
22
|
+
"eslint": "^8.57.1",
|
|
23
23
|
"eslint-config-oclif": "^4.0.0",
|
|
24
24
|
"globby": "^10.0.2",
|
|
25
|
-
"mocha": "^10.
|
|
25
|
+
"mocha": "^10.7.3",
|
|
26
26
|
"nyc": "^15.1.0",
|
|
27
|
-
"oclif": "^3.
|
|
28
|
-
"tslib": "^1.
|
|
27
|
+
"oclif": "^3.17.2",
|
|
28
|
+
"tslib": "^1.14.1"
|
|
29
29
|
},
|
|
30
30
|
"engines": {
|
|
31
31
|
"node": ">=14.0.0"
|
|
@@ -10,6 +10,7 @@ const { performBulkPublish, publishEntry, initializeLogger } = require('../consu
|
|
|
10
10
|
const retryFailedLogs = require('../util/retryfailed');
|
|
11
11
|
const { validateFile } = require('../util/fs');
|
|
12
12
|
const { isEmpty } = require('../util');
|
|
13
|
+
const { fetchBulkPublishLimit } = require('../util/common-utility');
|
|
13
14
|
|
|
14
15
|
const queue = getQueue();
|
|
15
16
|
queue.consumer = performBulkPublish;
|
|
@@ -200,6 +201,7 @@ async function getEntries(
|
|
|
200
201
|
environments,
|
|
201
202
|
forceUpdate,
|
|
202
203
|
apiVersion,
|
|
204
|
+
bulkPublishLimit,
|
|
203
205
|
skip = 0,
|
|
204
206
|
) {
|
|
205
207
|
let queryParams = {
|
|
@@ -223,7 +225,7 @@ async function getEntries(
|
|
|
223
225
|
const flag = await updateEntry(updatedEntry, locale);
|
|
224
226
|
if (flag) {
|
|
225
227
|
if (bulkPublish) {
|
|
226
|
-
if (bulkPublishSet.length <
|
|
228
|
+
if (bulkPublishSet.length < bulkPublishLimit) {
|
|
227
229
|
bulkPublishSet.push({
|
|
228
230
|
uid: entries[index].uid,
|
|
229
231
|
content_type: contentType,
|
|
@@ -231,7 +233,7 @@ async function getEntries(
|
|
|
231
233
|
publish_details: entries[index].publish_details,
|
|
232
234
|
});
|
|
233
235
|
}
|
|
234
|
-
if (bulkPublishSet.length ===
|
|
236
|
+
if (bulkPublishSet.length === bulkPublishLimit) {
|
|
235
237
|
await queue.Enqueue({
|
|
236
238
|
entries: bulkPublishSet,
|
|
237
239
|
locale,
|
|
@@ -260,7 +262,7 @@ async function getEntries(
|
|
|
260
262
|
console.log(`No change Observed for contentType ${contentType} with entry ${entries[index].uid}`);
|
|
261
263
|
}
|
|
262
264
|
|
|
263
|
-
if (index === entriesResponse.items.length - 1 && bulkPublishSet.length > 0 && bulkPublishSet.length <
|
|
265
|
+
if (index === entriesResponse.items.length - 1 && bulkPublishSet.length > 0 && bulkPublishSet.length < bulkPublishLimit) {
|
|
264
266
|
await queue.Enqueue({
|
|
265
267
|
entries: bulkPublishSet,
|
|
266
268
|
locale,
|
|
@@ -277,7 +279,7 @@ async function getEntries(
|
|
|
277
279
|
}
|
|
278
280
|
return setTimeout(
|
|
279
281
|
async () =>
|
|
280
|
-
getEntries(stack, config, schema, contentType, locale, bulkPublish, environments, forceUpdate, apiVersion, skip),
|
|
282
|
+
getEntries(stack, config, schema, contentType, locale, bulkPublish, environments, forceUpdate, apiVersion, bulkPublishLimit, skip),
|
|
281
283
|
2000,
|
|
282
284
|
);
|
|
283
285
|
})
|
|
@@ -321,6 +323,7 @@ async function start(
|
|
|
321
323
|
}
|
|
322
324
|
} else {
|
|
323
325
|
setConfig(config, bulkPublish);
|
|
326
|
+
const bulkPublishLimit = fetchBulkPublishLimit(stack?.org_uid);
|
|
324
327
|
for (let i = 0; i < contentTypes.length; i += 1) {
|
|
325
328
|
getContentTypeSchema(stack, contentTypes[i])
|
|
326
329
|
.then(async (schema) => {
|
|
@@ -335,7 +338,8 @@ async function start(
|
|
|
335
338
|
bulkPublish,
|
|
336
339
|
environments,
|
|
337
340
|
forceUpdate,
|
|
338
|
-
apiVersion
|
|
341
|
+
apiVersion,
|
|
342
|
+
bulkPublishLimit
|
|
339
343
|
);
|
|
340
344
|
} catch (err) {
|
|
341
345
|
console.log(`Failed to get Entries with contentType ${contentTypes[i]} and locale ${locales[j]}`);
|
|
@@ -15,6 +15,7 @@ const assetQueue = getQueue();
|
|
|
15
15
|
const { Command } = require('@contentstack/cli-command');
|
|
16
16
|
const command = new Command();
|
|
17
17
|
const { isEmpty } = require('../util');
|
|
18
|
+
const { fetchBulkPublishLimit } = require('../util/common-utility');
|
|
18
19
|
|
|
19
20
|
let bulkPublishSet = [];
|
|
20
21
|
let bulkPublishAssetSet = [];
|
|
@@ -33,13 +34,13 @@ function getQueryParams(filter) {
|
|
|
33
34
|
return queryString;
|
|
34
35
|
}
|
|
35
36
|
|
|
36
|
-
async function bulkAction(stack, items, bulkPublish, filter, destEnv, apiVersion) {
|
|
37
|
+
async function bulkAction(stack, items, bulkPublish, filter, destEnv, apiVersion, bulkPublishLimit) {
|
|
37
38
|
return new Promise(async (resolve) => {
|
|
38
39
|
for (let index = 0; index < items.length; index++) {
|
|
39
40
|
changedFlag = true;
|
|
40
41
|
|
|
41
42
|
if (bulkPublish) {
|
|
42
|
-
if (bulkPublishSet.length <
|
|
43
|
+
if (bulkPublishSet.length < bulkPublishLimit && items[index].type === 'entry_published') {
|
|
43
44
|
bulkPublishSet.push({
|
|
44
45
|
uid: items[index].data.uid,
|
|
45
46
|
content_type: items[index].content_type_uid,
|
|
@@ -49,7 +50,7 @@ async function bulkAction(stack, items, bulkPublish, filter, destEnv, apiVersion
|
|
|
49
50
|
});
|
|
50
51
|
}
|
|
51
52
|
|
|
52
|
-
if (bulkPublishAssetSet.length <
|
|
53
|
+
if (bulkPublishAssetSet.length < bulkPublishLimit && items[index].type === 'asset_published') {
|
|
53
54
|
bulkPublishAssetSet.push({
|
|
54
55
|
uid: items[index].data.uid,
|
|
55
56
|
version: items[index].data._version,
|
|
@@ -57,7 +58,7 @@ async function bulkAction(stack, items, bulkPublish, filter, destEnv, apiVersion
|
|
|
57
58
|
});
|
|
58
59
|
}
|
|
59
60
|
|
|
60
|
-
if (bulkPublishAssetSet.length ===
|
|
61
|
+
if (bulkPublishAssetSet.length === bulkPublishLimit) {
|
|
61
62
|
await queue.Enqueue({
|
|
62
63
|
assets: bulkPublishAssetSet,
|
|
63
64
|
Type: 'asset',
|
|
@@ -69,7 +70,7 @@ async function bulkAction(stack, items, bulkPublish, filter, destEnv, apiVersion
|
|
|
69
70
|
bulkPublishAssetSet = [];
|
|
70
71
|
}
|
|
71
72
|
|
|
72
|
-
if (bulkPublishSet.length ===
|
|
73
|
+
if (bulkPublishSet.length === bulkPublishLimit) {
|
|
73
74
|
await queue.Enqueue({
|
|
74
75
|
entries: bulkPublishSet,
|
|
75
76
|
locale: filter.locale,
|
|
@@ -81,7 +82,7 @@ async function bulkAction(stack, items, bulkPublish, filter, destEnv, apiVersion
|
|
|
81
82
|
bulkPublishSet = [];
|
|
82
83
|
}
|
|
83
84
|
|
|
84
|
-
if (index === items.length - 1 && bulkPublishAssetSet.length <=
|
|
85
|
+
if (index === items.length - 1 && bulkPublishAssetSet.length <= bulkPublishLimit && bulkPublishAssetSet.length > 0) {
|
|
85
86
|
await queue.Enqueue({
|
|
86
87
|
assets: bulkPublishAssetSet,
|
|
87
88
|
Type: 'asset',
|
|
@@ -93,7 +94,7 @@ async function bulkAction(stack, items, bulkPublish, filter, destEnv, apiVersion
|
|
|
93
94
|
bulkPublishAssetSet = [];
|
|
94
95
|
}
|
|
95
96
|
|
|
96
|
-
if (index === items.length - 1 && bulkPublishSet.length <=
|
|
97
|
+
if (index === items.length - 1 && bulkPublishSet.length <= bulkPublishLimit && bulkPublishSet.length > 0) {
|
|
97
98
|
await queue.Enqueue({
|
|
98
99
|
entries: bulkPublishSet,
|
|
99
100
|
locale: filter.locale,
|
|
@@ -143,6 +144,7 @@ async function getSyncEntries(
|
|
|
143
144
|
deliveryToken,
|
|
144
145
|
destEnv,
|
|
145
146
|
apiVersion,
|
|
147
|
+
bulkPublishLimit,
|
|
146
148
|
paginationToken = null,
|
|
147
149
|
) {
|
|
148
150
|
return new Promise(async (resolve, reject) => {
|
|
@@ -199,7 +201,7 @@ async function getSyncEntries(
|
|
|
199
201
|
}
|
|
200
202
|
|
|
201
203
|
if (entriesResponse.items.length > 0) {
|
|
202
|
-
await bulkAction(stack, entriesResponse.items, bulkPublish, filter, destEnv, apiVersion);
|
|
204
|
+
await bulkAction(stack, entriesResponse.items, bulkPublish, filter, destEnv, apiVersion, bulkPublishLimit);
|
|
203
205
|
}
|
|
204
206
|
if (!entriesResponse.pagination_token) {
|
|
205
207
|
if (!changedFlag) console.log('No Entries/Assets Found published on specified environment');
|
|
@@ -215,6 +217,7 @@ async function getSyncEntries(
|
|
|
215
217
|
deliveryToken,
|
|
216
218
|
destEnv,
|
|
217
219
|
apiVersion,
|
|
220
|
+
bulkPublishLimit,
|
|
218
221
|
entriesResponse.pagination_token,
|
|
219
222
|
);
|
|
220
223
|
}, 3000);
|
|
@@ -306,7 +309,8 @@ async function start(
|
|
|
306
309
|
setConfig(config, bulkPublish);
|
|
307
310
|
// filter.type = (f_types) ? f_types : types // types mentioned in the config file (f_types) are given preference
|
|
308
311
|
const queryParams = getQueryParams(filter);
|
|
309
|
-
|
|
312
|
+
const bulkPublishLimit = fetchBulkPublishLimit(stack?.org_uid);
|
|
313
|
+
await getSyncEntries(stack, config, queryParams, bulkPublish, filter, deliveryToken, destEnv, apiVersion, bulkPublishLimit);
|
|
310
314
|
}
|
|
311
315
|
}
|
|
312
316
|
|
|
@@ -12,6 +12,7 @@ const { performBulkPublish, publishEntry, initializeLogger } = require('../consu
|
|
|
12
12
|
const retryFailedLogs = require('../util/retryfailed');
|
|
13
13
|
const { validateFile } = require('../util/fs');
|
|
14
14
|
const { isEmpty } = require('../util');
|
|
15
|
+
const { fetchBulkPublishLimit } = require('../util/common-utility');
|
|
15
16
|
|
|
16
17
|
let changedFlag = false;
|
|
17
18
|
const queue = getQueue();
|
|
@@ -226,6 +227,7 @@ async function getEntries(
|
|
|
226
227
|
environments,
|
|
227
228
|
sourceEnv,
|
|
228
229
|
apiVersion,
|
|
230
|
+
bulkPublishLimit,
|
|
229
231
|
skip = 0,
|
|
230
232
|
) {
|
|
231
233
|
return new Promise((resolve, reject) => {
|
|
@@ -253,7 +255,7 @@ async function getEntries(
|
|
|
253
255
|
localizedEntry = localizedEntry || {};
|
|
254
256
|
if (checkNonLocalizedFieldChanges(schema, entry, localizedEntry)) {
|
|
255
257
|
if (bulkPublish) {
|
|
256
|
-
if (bulkPublishSet.length <
|
|
258
|
+
if (bulkPublishSet.length < bulkPublishLimit) {
|
|
257
259
|
bulkPublishSet.push({
|
|
258
260
|
uid: entry.uid,
|
|
259
261
|
content_type: contentType,
|
|
@@ -261,7 +263,7 @@ async function getEntries(
|
|
|
261
263
|
publish_details: localizedEntry.publish_details || [],
|
|
262
264
|
});
|
|
263
265
|
}
|
|
264
|
-
if (bulkPublishSet.length ===
|
|
266
|
+
if (bulkPublishSet.length === bulkPublishLimit) {
|
|
265
267
|
await queue.Enqueue({
|
|
266
268
|
entries: bulkPublishSet,
|
|
267
269
|
locale: locale.code,
|
|
@@ -293,7 +295,7 @@ async function getEntries(
|
|
|
293
295
|
reject(error);
|
|
294
296
|
}
|
|
295
297
|
}
|
|
296
|
-
if (bulkPublishSet.length > 0 && bulkPublishSet.length <
|
|
298
|
+
if (bulkPublishSet.length > 0 && bulkPublishSet.length < bulkPublishLimit) {
|
|
297
299
|
await queue.Enqueue({
|
|
298
300
|
entries: bulkPublishSet,
|
|
299
301
|
locale: locale.code,
|
|
@@ -311,7 +313,7 @@ async function getEntries(
|
|
|
311
313
|
bulkPublishSet = [];
|
|
312
314
|
return resolve();
|
|
313
315
|
}
|
|
314
|
-
await getEntries(stack, schema, contentType, languages, masterLocale, bulkPublish, environments, sourceEnv, apiVersion, skipCount);
|
|
316
|
+
await getEntries(stack, schema, contentType, languages, masterLocale, bulkPublish, environments, sourceEnv, apiVersion, bulkPublishLimit, skipCount);
|
|
315
317
|
return resolve();
|
|
316
318
|
})
|
|
317
319
|
.catch((error) => reject(error));
|
|
@@ -363,10 +365,11 @@ async function start({ retryFailed, bulkPublish, sourceEnv, contentTypes, enviro
|
|
|
363
365
|
setConfig(config, bulkPublish);
|
|
364
366
|
const masterLocale = 'en-us';
|
|
365
367
|
const languages = await getLanguages(stack);
|
|
368
|
+
const bulkPublishLimit = fetchBulkPublishLimit(stack?.org_uid);
|
|
366
369
|
for (const element of contentTypes) {
|
|
367
370
|
/* eslint-disable no-await-in-loop */
|
|
368
371
|
const schema = await getContentTypeSchema(stack, element);
|
|
369
|
-
await getEntries(stack, schema, element, languages, masterLocale, bulkPublish, environments, sourceEnv, apiVersion);
|
|
372
|
+
await getEntries(stack, schema, element, languages, masterLocale, bulkPublish, environments, sourceEnv, apiVersion, bulkPublishLimit);
|
|
370
373
|
/* eslint-enable no-await-in-loop */
|
|
371
374
|
}
|
|
372
375
|
}
|
|
@@ -6,6 +6,7 @@ const { performBulkPublish, publishAsset, initializeLogger } = require('../consu
|
|
|
6
6
|
const retryFailedLogs = require('../util/retryfailed');
|
|
7
7
|
const { validateFile } = require('../util/fs');
|
|
8
8
|
const { isEmpty } = require('../util');
|
|
9
|
+
const { fetchBulkPublishLimit } = require('../util/common-utility');
|
|
9
10
|
|
|
10
11
|
const queue = getQueue();
|
|
11
12
|
let logFileName;
|
|
@@ -14,7 +15,7 @@ let filePath;
|
|
|
14
15
|
|
|
15
16
|
/* eslint-disable no-param-reassign */
|
|
16
17
|
|
|
17
|
-
async function getAssets(stack, folder, bulkPublish, environments, locale, apiVersion, skip = 0) {
|
|
18
|
+
async function getAssets(stack, folder, bulkPublish, environments, locale, apiVersion, bulkPublishLimit, skip = 0) {
|
|
18
19
|
return new Promise((resolve, reject) => {
|
|
19
20
|
let queryParams = {
|
|
20
21
|
folder: folder,
|
|
@@ -33,18 +34,27 @@ async function getAssets(stack, folder, bulkPublish, environments, locale, apiVe
|
|
|
33
34
|
let assets = assetResponse.items;
|
|
34
35
|
for (let index = 0; index < assetResponse.items.length; index++) {
|
|
35
36
|
if (assets[index].is_dir === true) {
|
|
36
|
-
await getAssets(
|
|
37
|
+
await getAssets(
|
|
38
|
+
stack,
|
|
39
|
+
assets[index].uid,
|
|
40
|
+
bulkPublish,
|
|
41
|
+
environments,
|
|
42
|
+
locale,
|
|
43
|
+
apiVersion,
|
|
44
|
+
bulkPublishLimit,
|
|
45
|
+
0,
|
|
46
|
+
);
|
|
37
47
|
continue;
|
|
38
48
|
}
|
|
39
49
|
if (bulkPublish) {
|
|
40
|
-
if (bulkPublishSet.length <
|
|
50
|
+
if (bulkPublishSet.length < bulkPublishLimit) {
|
|
41
51
|
bulkPublishSet.push({
|
|
42
52
|
uid: assets[index].uid,
|
|
43
53
|
locale,
|
|
44
54
|
publish_details: assets[index].publish_details || [],
|
|
45
55
|
});
|
|
46
56
|
}
|
|
47
|
-
if (bulkPublishSet.length ===
|
|
57
|
+
if (bulkPublishSet.length === bulkPublishLimit) {
|
|
48
58
|
await queue.Enqueue({
|
|
49
59
|
assets: bulkPublishSet,
|
|
50
60
|
Type: 'asset',
|
|
@@ -56,7 +66,11 @@ async function getAssets(stack, folder, bulkPublish, environments, locale, apiVe
|
|
|
56
66
|
bulkPublishSet = [];
|
|
57
67
|
}
|
|
58
68
|
|
|
59
|
-
if (
|
|
69
|
+
if (
|
|
70
|
+
assetResponse.items.length - 1 === index &&
|
|
71
|
+
bulkPublishSet.length > 0 &&
|
|
72
|
+
bulkPublishSet.length < bulkPublishLimit
|
|
73
|
+
) {
|
|
60
74
|
await queue.Enqueue({
|
|
61
75
|
assets: bulkPublishSet,
|
|
62
76
|
Type: 'asset',
|
|
@@ -81,7 +95,7 @@ async function getAssets(stack, folder, bulkPublish, environments, locale, apiVe
|
|
|
81
95
|
if (skip === assetResponse.count) {
|
|
82
96
|
return resolve(true);
|
|
83
97
|
}
|
|
84
|
-
await getAssets(stack, folder, bulkPublish, environments, locale, apiVersion, skip);
|
|
98
|
+
await getAssets(stack, folder, bulkPublish, environments, locale, apiVersion, bulkPublishLimit, skip);
|
|
85
99
|
return resolve();
|
|
86
100
|
} else {
|
|
87
101
|
resolve();
|
|
@@ -133,8 +147,9 @@ async function start({ retryFailed, bulkPublish, environments, folderUid, locale
|
|
|
133
147
|
}
|
|
134
148
|
} else if (folderUid) {
|
|
135
149
|
setConfig(config, bulkPublish);
|
|
150
|
+
const bulkPublishLimit = fetchBulkPublishLimit(stack?.org_uid);
|
|
136
151
|
for (const element of locales) {
|
|
137
|
-
await getAssets(stack, folderUid, bulkPublish, environments, element, apiVersion);
|
|
152
|
+
await getAssets(stack, folderUid, bulkPublish, environments, element, apiVersion, bulkPublishLimit);
|
|
138
153
|
}
|
|
139
154
|
}
|
|
140
155
|
}
|
|
@@ -10,6 +10,7 @@ const retryFailedLogs = require('../util/retryfailed');
|
|
|
10
10
|
const { validateFile } = require('../util/fs');
|
|
11
11
|
const { setDelayForBulkPublish } = require('../util');
|
|
12
12
|
const { isEmpty } = require('../util');
|
|
13
|
+
const { fetchBulkPublishLimit } = require('../util/common-utility');
|
|
13
14
|
|
|
14
15
|
let skipCount;
|
|
15
16
|
const queue = getQueue();
|
|
@@ -30,7 +31,7 @@ async function getEnvironment(stack, environmentName) {
|
|
|
30
31
|
});
|
|
31
32
|
}
|
|
32
33
|
|
|
33
|
-
async function getEntries(stack, contentType, environmentUid, locale, bulkPublish, environments, apiVersion, skip = 0) {
|
|
34
|
+
async function getEntries(stack, contentType, environmentUid, locale, bulkPublish, environments, apiVersion, bulkPublishLimit, skip = 0) {
|
|
34
35
|
return new Promise((resolve, reject) => {
|
|
35
36
|
skipCount = skip;
|
|
36
37
|
|
|
@@ -57,7 +58,7 @@ async function getEntries(stack, contentType, environmentUid, locale, bulkPublis
|
|
|
57
58
|
if (publishedEntry && publishedEntry.version < entries[index]._version) {
|
|
58
59
|
changedFlag = true;
|
|
59
60
|
if (bulkPublish) {
|
|
60
|
-
if (bulkPublishSet.length <
|
|
61
|
+
if (bulkPublishSet.length < bulkPublishLimit) {
|
|
61
62
|
bulkPublishSet.push({
|
|
62
63
|
uid: entries[index].uid,
|
|
63
64
|
content_type: contentType,
|
|
@@ -77,7 +78,7 @@ async function getEntries(stack, contentType, environmentUid, locale, bulkPublis
|
|
|
77
78
|
});
|
|
78
79
|
}
|
|
79
80
|
}
|
|
80
|
-
if (bulkPublishSet.length ===
|
|
81
|
+
if (bulkPublishSet.length === bulkPublishLimit) {
|
|
81
82
|
await queue.Enqueue({
|
|
82
83
|
entries: bulkPublishSet,
|
|
83
84
|
locale,
|
|
@@ -91,7 +92,7 @@ async function getEntries(stack, contentType, environmentUid, locale, bulkPublis
|
|
|
91
92
|
if (
|
|
92
93
|
index === responseEntries.items.length - 1 &&
|
|
93
94
|
bulkPublishSet.length > 0 &&
|
|
94
|
-
bulkPublishSet.length <=
|
|
95
|
+
bulkPublishSet.length <= bulkPublishLimit
|
|
95
96
|
) {
|
|
96
97
|
await queue.Enqueue({
|
|
97
98
|
entries: bulkPublishSet,
|
|
@@ -162,11 +163,12 @@ async function start({ retryFailed, bulkPublish, sourceEnv, contentTypes, locale
|
|
|
162
163
|
}
|
|
163
164
|
} else if (sourceEnv) {
|
|
164
165
|
setConfig(config, bulkPublish);
|
|
166
|
+
const bulkPublishLimit = fetchBulkPublishLimit(stack?.org_uid)
|
|
165
167
|
const environmentDetails = await getEnvironment(stack, sourceEnv);
|
|
166
168
|
for (let i = 0; i < contentTypes.length; i += 1) {
|
|
167
169
|
for (let j = 0; j < locales.length; j += 1) {
|
|
168
170
|
/* eslint-disable no-await-in-loop */
|
|
169
|
-
await getEntries(stack, contentTypes[i], environmentDetails.uid, locales[j], bulkPublish, environments, apiVersion);
|
|
171
|
+
await getEntries(stack, contentTypes[i], environmentDetails.uid, locales[j], bulkPublish, environments, apiVersion,bulkPublishLimit );
|
|
170
172
|
/* eslint-enable no-await-in-loop */
|
|
171
173
|
}
|
|
172
174
|
}
|
|
@@ -8,6 +8,7 @@ const { performBulkPublish, publishEntry, initializeLogger } = require('../consu
|
|
|
8
8
|
const retryFailedLogs = require('../util/retryfailed');
|
|
9
9
|
const { validateFile } = require('../util/fs');
|
|
10
10
|
const { isEmpty } = require('../util');
|
|
11
|
+
const { fetchBulkPublishLimit } = require('../util/common-utility');
|
|
11
12
|
|
|
12
13
|
const queue = getQueue();
|
|
13
14
|
|
|
@@ -18,7 +19,16 @@ let allContentTypes = [];
|
|
|
18
19
|
let bulkPublishSet = [];
|
|
19
20
|
let filePath;
|
|
20
21
|
|
|
21
|
-
async function getEntries(
|
|
22
|
+
async function getEntries(
|
|
23
|
+
stack,
|
|
24
|
+
contentType,
|
|
25
|
+
locale,
|
|
26
|
+
bulkPublish,
|
|
27
|
+
environments,
|
|
28
|
+
apiVersion,
|
|
29
|
+
bulkPublishLimit,
|
|
30
|
+
skip = 0,
|
|
31
|
+
) {
|
|
22
32
|
return new Promise((resolve, reject) => {
|
|
23
33
|
skipCount = skip;
|
|
24
34
|
|
|
@@ -39,7 +49,7 @@ async function getEntries(stack, contentType, locale, bulkPublish, environments,
|
|
|
39
49
|
let entries = entriesResponse.items;
|
|
40
50
|
for (let index = 0; index < entriesResponse.items.length; index++) {
|
|
41
51
|
if (bulkPublish) {
|
|
42
|
-
if (bulkPublishSet.length <
|
|
52
|
+
if (bulkPublishSet.length < bulkPublishLimit) {
|
|
43
53
|
bulkPublishSet.push({
|
|
44
54
|
uid: entries[index].uid,
|
|
45
55
|
content_type: contentType,
|
|
@@ -48,21 +58,21 @@ async function getEntries(stack, contentType, locale, bulkPublish, environments,
|
|
|
48
58
|
});
|
|
49
59
|
}
|
|
50
60
|
|
|
51
|
-
if (bulkPublishSet.length ===
|
|
61
|
+
if (bulkPublishSet.length === bulkPublishLimit) {
|
|
52
62
|
await queue.Enqueue({
|
|
53
63
|
entries: bulkPublishSet,
|
|
54
64
|
locale,
|
|
55
65
|
Type: 'entry',
|
|
56
66
|
environments: environments,
|
|
57
67
|
stack: stack,
|
|
58
|
-
apiVersion
|
|
68
|
+
apiVersion,
|
|
59
69
|
});
|
|
60
70
|
bulkPublishSet = [];
|
|
61
71
|
}
|
|
62
72
|
|
|
63
73
|
if (
|
|
64
74
|
index === entriesResponse.items.length - 1 &&
|
|
65
|
-
bulkPublishSet.length <=
|
|
75
|
+
bulkPublishSet.length <= bulkPublishLimit &&
|
|
66
76
|
bulkPublishSet.length > 0
|
|
67
77
|
) {
|
|
68
78
|
await queue.Enqueue({
|
|
@@ -71,7 +81,7 @@ async function getEntries(stack, contentType, locale, bulkPublish, environments,
|
|
|
71
81
|
Type: 'entry',
|
|
72
82
|
environments: environments,
|
|
73
83
|
stack: stack,
|
|
74
|
-
apiVersion
|
|
84
|
+
apiVersion,
|
|
75
85
|
});
|
|
76
86
|
bulkPublishSet = [];
|
|
77
87
|
} // bulkPublish
|
|
@@ -92,7 +102,16 @@ async function getEntries(stack, contentType, locale, bulkPublish, environments,
|
|
|
92
102
|
bulkPublishSet = [];
|
|
93
103
|
return resolve();
|
|
94
104
|
}
|
|
95
|
-
await getEntries(
|
|
105
|
+
await getEntries(
|
|
106
|
+
stack,
|
|
107
|
+
contentType,
|
|
108
|
+
locale,
|
|
109
|
+
bulkPublish,
|
|
110
|
+
environments,
|
|
111
|
+
apiVersion,
|
|
112
|
+
bulkPublishLimit,
|
|
113
|
+
skipCount,
|
|
114
|
+
);
|
|
96
115
|
return resolve();
|
|
97
116
|
})
|
|
98
117
|
.catch((error) => reject(error));
|
|
@@ -170,10 +189,19 @@ async function start(
|
|
|
170
189
|
} else {
|
|
171
190
|
allContentTypes = contentTypes;
|
|
172
191
|
}
|
|
192
|
+
const bulkPublishLimit = fetchBulkPublishLimit(stack?.org_uid);
|
|
173
193
|
for (let loc = 0; loc < locales.length; loc += 1) {
|
|
174
194
|
for (let i = 0; i < allContentTypes.length; i += 1) {
|
|
175
195
|
/* eslint-disable no-await-in-loop */
|
|
176
|
-
await getEntries(
|
|
196
|
+
await getEntries(
|
|
197
|
+
stack,
|
|
198
|
+
allContentTypes[i].uid || allContentTypes[i],
|
|
199
|
+
locales[loc],
|
|
200
|
+
bulkPublish,
|
|
201
|
+
environments,
|
|
202
|
+
apiVersion,
|
|
203
|
+
bulkPublishLimit,
|
|
204
|
+
);
|
|
177
205
|
/* eslint-enable no-await-in-loop */
|
|
178
206
|
}
|
|
179
207
|
}
|
|
@@ -9,6 +9,7 @@ const { performBulkPublish, publishEntry, initializeLogger } = require('../consu
|
|
|
9
9
|
const retryFailedLogs = require('../util/retryfailed');
|
|
10
10
|
const { validateFile } = require('../util/fs');
|
|
11
11
|
const { isEmpty } = require('../util');
|
|
12
|
+
const { fetchBulkPublishLimit } = require('../util/common-utility');
|
|
12
13
|
|
|
13
14
|
const queue = getQueue();
|
|
14
15
|
let skipCount;
|
|
@@ -42,7 +43,7 @@ async function getEnvironment(stack, environmentName) {
|
|
|
42
43
|
});
|
|
43
44
|
}
|
|
44
45
|
|
|
45
|
-
async function getEntries(stack, contentType, environmentUid, locale, bulkPublish, environments, apiVersion, skip = 0) {
|
|
46
|
+
async function getEntries(stack, contentType, environmentUid, locale, bulkPublish, environments, apiVersion, bulkPublishLimit, skip = 0) {
|
|
46
47
|
return new Promise((resolve, reject) => {
|
|
47
48
|
skipCount = skip;
|
|
48
49
|
|
|
@@ -68,7 +69,7 @@ async function getEntries(stack, contentType, environmentUid, locale, bulkPublis
|
|
|
68
69
|
if (!publishedEntry) {
|
|
69
70
|
changedFlag = true;
|
|
70
71
|
if (bulkPublish) {
|
|
71
|
-
if (bulkPublishSet.length <
|
|
72
|
+
if (bulkPublishSet.length < bulkPublishLimit) {
|
|
72
73
|
bulkPublishSet.push({
|
|
73
74
|
uid: entries[index].uid,
|
|
74
75
|
content_type: contentType,
|
|
@@ -89,7 +90,7 @@ async function getEntries(stack, contentType, environmentUid, locale, bulkPublis
|
|
|
89
90
|
}
|
|
90
91
|
}
|
|
91
92
|
if (bulkPublish) {
|
|
92
|
-
if (bulkPublishSet.length ===
|
|
93
|
+
if (bulkPublishSet.length === bulkPublishLimit) {
|
|
93
94
|
await queue.Enqueue({
|
|
94
95
|
entries: bulkPublishSet,
|
|
95
96
|
locale,
|
|
@@ -102,7 +103,7 @@ async function getEntries(stack, contentType, environmentUid, locale, bulkPublis
|
|
|
102
103
|
}
|
|
103
104
|
if (
|
|
104
105
|
index === responseEntries.items.length - 1 &&
|
|
105
|
-
bulkPublishSet.length <
|
|
106
|
+
bulkPublishSet.length < bulkPublishLimit &&
|
|
106
107
|
bulkPublishSet.length > 0
|
|
107
108
|
) {
|
|
108
109
|
await queue.Enqueue({
|
|
@@ -162,10 +163,11 @@ async function start({ sourceEnv, environments, locale, contentTypes, bulkPublis
|
|
|
162
163
|
} else {
|
|
163
164
|
setConfig(config, bulkPublish);
|
|
164
165
|
if (sourceEnv) {
|
|
166
|
+
const bulkPublishLimit = fetchBulkPublishLimit(stack?.org_uid);
|
|
165
167
|
const environmentDetails = await getEnvironment(stack, sourceEnv);
|
|
166
168
|
for (let i = 0; i < contentTypes.length; i += 1) {
|
|
167
169
|
/* eslint-disable no-await-in-loop */
|
|
168
|
-
await getEntries(stack, contentTypes[i], environmentDetails.uid, locale, bulkPublish, environments, apiVersion);
|
|
170
|
+
await getEntries(stack, contentTypes[i], environmentDetails.uid, locale, bulkPublish, environments, apiVersion, bulkPublishLimit);
|
|
169
171
|
/* eslint-enable no-await-in-loop */
|
|
170
172
|
changedFlag = false;
|
|
171
173
|
}
|
package/src/producer/revert.js
CHANGED
|
@@ -12,6 +12,7 @@ const { configHandler } = require('@contentstack/cli-utilities');
|
|
|
12
12
|
let config = configHandler
|
|
13
13
|
const { initializeLogger, performBulkUnPublish, publishUsingVersion } = require('../consumer/publish');
|
|
14
14
|
const getStack = require('../util/client.js').getStack;
|
|
15
|
+
const { fetchBulkPublishLimit } = require('../util/common-utility');
|
|
15
16
|
|
|
16
17
|
const intervalBetweenPublishRequests = 3; // interval in seconds
|
|
17
18
|
|
|
@@ -185,6 +186,7 @@ async function revertUsingLogs(logFileName) {
|
|
|
185
186
|
branch: response.file[0].message.branch || 'main'
|
|
186
187
|
});
|
|
187
188
|
logs = await formatLogData(stack, response.file);
|
|
189
|
+
const bulkPublishLimit = fetchBulkPublishLimit(stack?.org_uid);
|
|
188
190
|
|
|
189
191
|
logs.environments.forEach((environment, envIndex) => {
|
|
190
192
|
switch (logs.type) {
|
|
@@ -199,7 +201,7 @@ async function revertUsingLogs(logFileName) {
|
|
|
199
201
|
// handle revert case
|
|
200
202
|
|
|
201
203
|
publishDetailsForThisEnvironment.forEach((publishDetail) => {
|
|
202
|
-
if (bulkPublishSet.length <
|
|
204
|
+
if (bulkPublishSet.length < bulkPublishLimit) {
|
|
203
205
|
bulkPublishSet.push({
|
|
204
206
|
uid,
|
|
205
207
|
version: publishDetail.version,
|
|
@@ -209,7 +211,7 @@ async function revertUsingLogs(logFileName) {
|
|
|
209
211
|
});
|
|
210
212
|
}
|
|
211
213
|
|
|
212
|
-
if (bulkPublishSet.length ===
|
|
214
|
+
if (bulkPublishSet.length === bulkPublishLimit) {
|
|
213
215
|
const data = {
|
|
214
216
|
entries: bulkPublishSet,
|
|
215
217
|
environments: [environment.name],
|
|
@@ -222,7 +224,7 @@ async function revertUsingLogs(logFileName) {
|
|
|
222
224
|
}
|
|
223
225
|
});
|
|
224
226
|
} else {
|
|
225
|
-
if (bulkUnpublishSet.length <
|
|
227
|
+
if (bulkUnpublishSet.length < bulkPublishLimit) {
|
|
226
228
|
bulkUnpublishSet.push({
|
|
227
229
|
uid,
|
|
228
230
|
locale,
|
|
@@ -231,7 +233,7 @@ async function revertUsingLogs(logFileName) {
|
|
|
231
233
|
});
|
|
232
234
|
}
|
|
233
235
|
|
|
234
|
-
if (bulkUnpublishSet.length ===
|
|
236
|
+
if (bulkUnpublishSet.length === bulkPublishLimit) {
|
|
235
237
|
unpublishQueue.Enqueue({
|
|
236
238
|
entries: bulkUnpublishSet,
|
|
237
239
|
environments: [environment.name],
|
|
@@ -244,7 +246,7 @@ async function revertUsingLogs(logFileName) {
|
|
|
244
246
|
}
|
|
245
247
|
|
|
246
248
|
if (entryIndex === logs.entries[loc].length - 1) {
|
|
247
|
-
if (bulkUnpublishSet.length <=
|
|
249
|
+
if (bulkUnpublishSet.length <= bulkPublishLimit && bulkUnpublishSet.length !== 0) {
|
|
248
250
|
unpublishQueue.Enqueue({
|
|
249
251
|
entries: bulkUnpublishSet,
|
|
250
252
|
environments: [environment.name],
|
|
@@ -255,7 +257,7 @@ async function revertUsingLogs(logFileName) {
|
|
|
255
257
|
bulkUnpublishSet = [];
|
|
256
258
|
}
|
|
257
259
|
|
|
258
|
-
if (bulkPublishSet.length <=
|
|
260
|
+
if (bulkPublishSet.length <= bulkPublishLimit && bulkPublishSet.length !== 0) {
|
|
259
261
|
const data = {
|
|
260
262
|
entries: bulkPublishSet,
|
|
261
263
|
environments: [environment.name],
|
|
@@ -288,7 +290,7 @@ async function revertUsingLogs(logFileName) {
|
|
|
288
290
|
// handle revert case
|
|
289
291
|
|
|
290
292
|
publishDetailsForThisEnvironment.forEach((publishDetail) => {
|
|
291
|
-
if (bulkPublishSet.length <
|
|
293
|
+
if (bulkPublishSet.length < bulkPublishLimit) {
|
|
292
294
|
bulkPublishSet.push({
|
|
293
295
|
uid,
|
|
294
296
|
version: publishDetail.version,
|
|
@@ -296,7 +298,7 @@ async function revertUsingLogs(logFileName) {
|
|
|
296
298
|
});
|
|
297
299
|
}
|
|
298
300
|
|
|
299
|
-
if (bulkPublishSet.length ===
|
|
301
|
+
if (bulkPublishSet.length === bulkPublishLimit) {
|
|
300
302
|
const data = {
|
|
301
303
|
assets: bulkPublishSet,
|
|
302
304
|
environments: [environment.name],
|
|
@@ -309,14 +311,14 @@ async function revertUsingLogs(logFileName) {
|
|
|
309
311
|
}
|
|
310
312
|
});
|
|
311
313
|
} else {
|
|
312
|
-
if (bulkUnpublishSet.length <
|
|
314
|
+
if (bulkUnpublishSet.length < bulkPublishLimit) {
|
|
313
315
|
bulkUnpublishSet.push({
|
|
314
316
|
uid,
|
|
315
317
|
publish_details: [],
|
|
316
318
|
});
|
|
317
319
|
}
|
|
318
320
|
|
|
319
|
-
if (bulkUnpublishSet.length ===
|
|
321
|
+
if (bulkUnpublishSet.length === bulkPublishLimit) {
|
|
320
322
|
unpublishQueue.Enqueue({
|
|
321
323
|
assets: bulkUnpublishSet,
|
|
322
324
|
environments: [environment.name],
|
|
@@ -328,7 +330,7 @@ async function revertUsingLogs(logFileName) {
|
|
|
328
330
|
}
|
|
329
331
|
|
|
330
332
|
if (assetIndex === logs.assets.length - 1) {
|
|
331
|
-
if (bulkUnpublishSet.length <=
|
|
333
|
+
if (bulkUnpublishSet.length <= bulkPublishLimit && bulkUnpublishSet.length !== 0) {
|
|
332
334
|
unpublishQueue.Enqueue({
|
|
333
335
|
assets: bulkUnpublishSet,
|
|
334
336
|
environments: [environment.name],
|
|
@@ -338,7 +340,7 @@ async function revertUsingLogs(logFileName) {
|
|
|
338
340
|
bulkUnpublishSet = [];
|
|
339
341
|
}
|
|
340
342
|
|
|
341
|
-
if (bulkPublishSet.length <=
|
|
343
|
+
if (bulkPublishSet.length <= bulkPublishLimit && bulkPublishSet.length !== 0) {
|
|
342
344
|
const data = {
|
|
343
345
|
assets: bulkPublishSet,
|
|
344
346
|
environments: [environment.name],
|
|
@@ -15,6 +15,7 @@ const assetQueue = getQueue();
|
|
|
15
15
|
const { Command } = require('@contentstack/cli-command');
|
|
16
16
|
const command = new Command();
|
|
17
17
|
const { isEmpty } = require('../util');
|
|
18
|
+
const { fetchBulkPublishLimit } = require('../util/common-utility');
|
|
18
19
|
|
|
19
20
|
let bulkUnPublishSet = [];
|
|
20
21
|
let bulkUnPulishAssetSet = [];
|
|
@@ -50,13 +51,13 @@ function getQueryParams(filter) {
|
|
|
50
51
|
return queryString;
|
|
51
52
|
}
|
|
52
53
|
|
|
53
|
-
function bulkAction(stack, items, bulkUnpublish, environment, locale, apiVersion) {
|
|
54
|
+
function bulkAction(stack, items, bulkUnpublish, environment, locale, apiVersion, bulkPublishLimit) {
|
|
54
55
|
return new Promise(async (resolve) => {
|
|
55
56
|
for (let index = 0; index < items.length; index++) {
|
|
56
57
|
changedFlag = true;
|
|
57
58
|
|
|
58
59
|
if (bulkUnpublish) {
|
|
59
|
-
if (bulkUnPublishSet.length <
|
|
60
|
+
if (bulkUnPublishSet.length < bulkPublishLimit && items[index].type === 'entry_published') {
|
|
60
61
|
bulkUnPublishSet.push({
|
|
61
62
|
uid: items[index].data.uid,
|
|
62
63
|
content_type: items[index].content_type_uid,
|
|
@@ -65,7 +66,7 @@ function bulkAction(stack, items, bulkUnpublish, environment, locale, apiVersion
|
|
|
65
66
|
});
|
|
66
67
|
}
|
|
67
68
|
|
|
68
|
-
if (bulkUnPulishAssetSet.length <
|
|
69
|
+
if (bulkUnPulishAssetSet.length < bulkPublishLimit && items[index].type === 'asset_published') {
|
|
69
70
|
bulkUnPulishAssetSet.push({
|
|
70
71
|
uid: items[index].data.uid,
|
|
71
72
|
version: items[index].data._version,
|
|
@@ -73,7 +74,7 @@ function bulkAction(stack, items, bulkUnpublish, environment, locale, apiVersion
|
|
|
73
74
|
});
|
|
74
75
|
}
|
|
75
76
|
|
|
76
|
-
if (bulkUnPulishAssetSet.length ===
|
|
77
|
+
if (bulkUnPulishAssetSet.length === bulkPublishLimit) {
|
|
77
78
|
await queue.Enqueue({
|
|
78
79
|
assets: bulkUnPulishAssetSet,
|
|
79
80
|
Type: 'asset',
|
|
@@ -85,7 +86,7 @@ function bulkAction(stack, items, bulkUnpublish, environment, locale, apiVersion
|
|
|
85
86
|
bulkUnPulishAssetSet = [];
|
|
86
87
|
}
|
|
87
88
|
|
|
88
|
-
if (bulkUnPublishSet.length ===
|
|
89
|
+
if (bulkUnPublishSet.length === bulkPublishLimit) {
|
|
89
90
|
await queue.Enqueue({
|
|
90
91
|
entries: bulkUnPublishSet,
|
|
91
92
|
locale: locale,
|
|
@@ -96,7 +97,7 @@ function bulkAction(stack, items, bulkUnpublish, environment, locale, apiVersion
|
|
|
96
97
|
});
|
|
97
98
|
bulkUnPublishSet = [];
|
|
98
99
|
}
|
|
99
|
-
if (index === items.length - 1 && bulkUnPulishAssetSet.length <=
|
|
100
|
+
if (index === items.length - 1 && bulkUnPulishAssetSet.length <= bulkPublishLimit && bulkUnPulishAssetSet.length > 0) {
|
|
100
101
|
await queue.Enqueue({
|
|
101
102
|
assets: bulkUnPulishAssetSet,
|
|
102
103
|
Type: 'asset',
|
|
@@ -108,7 +109,7 @@ function bulkAction(stack, items, bulkUnpublish, environment, locale, apiVersion
|
|
|
108
109
|
bulkUnPulishAssetSet = [];
|
|
109
110
|
}
|
|
110
111
|
|
|
111
|
-
if (index === items.length - 1 && bulkUnPublishSet.length <=
|
|
112
|
+
if (index === items.length - 1 && bulkUnPublishSet.length <= bulkPublishLimit && bulkUnPublishSet.length > 0) {
|
|
112
113
|
await queue.Enqueue({
|
|
113
114
|
entries: bulkUnPublishSet,
|
|
114
115
|
locale: locale,
|
|
@@ -155,6 +156,7 @@ async function getSyncEntries(
|
|
|
155
156
|
environment,
|
|
156
157
|
deliveryToken,
|
|
157
158
|
apiVersion,
|
|
159
|
+
bulkPublishLimit,
|
|
158
160
|
paginationToken = null,
|
|
159
161
|
) {
|
|
160
162
|
return new Promise(async (resolve, reject) => {
|
|
@@ -205,7 +207,7 @@ async function getSyncEntries(
|
|
|
205
207
|
const entriesResponse = await Stack.sync(syncData);
|
|
206
208
|
|
|
207
209
|
if (entriesResponse.items.length > 0) {
|
|
208
|
-
await bulkAction(stack, entriesResponse.items, bulkUnpublish, environment, locale, apiVersion);
|
|
210
|
+
await bulkAction(stack, entriesResponse.items, bulkUnpublish, environment, locale, apiVersion, bulkPublishLimit);
|
|
209
211
|
}
|
|
210
212
|
if (entriesResponse.items.length === 0) {
|
|
211
213
|
if (!changedFlag) console.log('No Entries/Assets Found published on specified environment');
|
|
@@ -221,6 +223,7 @@ async function getSyncEntries(
|
|
|
221
223
|
environment,
|
|
222
224
|
deliveryToken,
|
|
223
225
|
apiVersion,
|
|
226
|
+
bulkPublishLimit,
|
|
224
227
|
null,
|
|
225
228
|
);
|
|
226
229
|
}, 3000);
|
|
@@ -294,7 +297,8 @@ async function start(
|
|
|
294
297
|
}
|
|
295
298
|
setConfig(config, bulkUnpublish);
|
|
296
299
|
const queryParams = getQueryParams(filter);
|
|
297
|
-
|
|
300
|
+
const bulkPublishLimit = fetchBulkPublishLimit(stack?.org_uid);
|
|
301
|
+
await getSyncEntries(stack, config, locale, queryParams, bulkUnpublish, environment, deliveryToken, apiVersion, bulkPublishLimit);
|
|
298
302
|
}
|
|
299
303
|
}
|
|
300
304
|
|
package/src/util/client.js
CHANGED
|
@@ -15,12 +15,18 @@ async function getStack(data) {
|
|
|
15
15
|
stackOptions.api_key = tokenDetails.apiKey;
|
|
16
16
|
} else if (data.stackApiKey) {
|
|
17
17
|
if (!isAuthenticated()) {
|
|
18
|
-
throw new Error(
|
|
18
|
+
throw new Error(
|
|
19
|
+
'Please login to proceed further. Or use `--alias` instead of `--stack-api-key` to proceed without logging in.',
|
|
20
|
+
);
|
|
19
21
|
}
|
|
20
22
|
stackOptions.api_key = data.stackApiKey;
|
|
21
23
|
}
|
|
22
24
|
const managementClient = await managementSDKClient(options);
|
|
23
25
|
const stack = managementClient.stack(stackOptions);
|
|
26
|
+
if (data.stackApiKey && isAuthenticated()) {
|
|
27
|
+
const stackDetails = await stack.fetch();
|
|
28
|
+
stack.org_uid = stackDetails.org_uid;
|
|
29
|
+
}
|
|
24
30
|
stack.alias = data.alias;
|
|
25
31
|
stack.host = data.host;
|
|
26
32
|
return stack;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
const { configHandler, cliux } = require('@contentstack/cli-utilities');
|
|
2
|
+
|
|
3
|
+
function fetchBulkPublishLimit(orgUid) {
|
|
4
|
+
const plan = configHandler.get('rateLimit');
|
|
5
|
+
let bulkPublishLimit = 1; // Default limit according to the default plan
|
|
6
|
+
|
|
7
|
+
if (plan) {
|
|
8
|
+
const orgPlan = plan[orgUid]?.bulkLimit;
|
|
9
|
+
const defaultPlan = plan['default']?.bulkLimit;
|
|
10
|
+
|
|
11
|
+
if (orgPlan?.value && orgPlan?.utilize) {
|
|
12
|
+
bulkPublishLimit = Math.ceil((orgPlan.value * orgPlan.utilize) / 100);
|
|
13
|
+
} else if (defaultPlan?.value && defaultPlan?.utilize) {
|
|
14
|
+
bulkPublishLimit = Math.ceil((defaultPlan.value * defaultPlan.utilize) / 100);
|
|
15
|
+
}
|
|
16
|
+
} else {
|
|
17
|
+
cliux.print(
|
|
18
|
+
'Bulk publish limit not found in config. Using default limit. Please set the limit using $csdx config:set:rate-limit',
|
|
19
|
+
{ color: 'yellow' },
|
|
20
|
+
);
|
|
21
|
+
// TODO: Update the link once the rate-limit documentation is ready
|
|
22
|
+
cliux.print(
|
|
23
|
+
'Suggestions: To set the rate limit, visit https://www.contentstack.com/docs/developers/cli#get-started-with-contentstack-command-line-interface-cli',
|
|
24
|
+
{ color: 'blue' },
|
|
25
|
+
);
|
|
26
|
+
}
|
|
27
|
+
return bulkPublishLimit;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
module.exports = { fetchBulkPublishLimit };
|