@contentstack/cli-cm-bulk-publish 0.1.1-beta.3 → 1.0.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.
Files changed (50) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +533 -281
  3. package/oclif.manifest.json +1 -1
  4. package/package.json +27 -12
  5. package/src/commands/cm/assets/publish.js +233 -0
  6. package/src/commands/cm/assets/unpublish.js +179 -0
  7. package/src/commands/cm/bulk-publish/cross-publish.js +187 -68
  8. package/src/commands/cm/bulk-publish/index.js +5 -6
  9. package/src/commands/cm/entries/publish-modified.js +197 -0
  10. package/src/commands/cm/entries/publish-non-localized-fields.js +208 -0
  11. package/src/commands/cm/entries/publish-only-unpublished.js +109 -0
  12. package/src/commands/cm/entries/publish.js +254 -0
  13. package/src/commands/cm/entries/unpublish.js +184 -0
  14. package/src/commands/cm/entries/update-and-publish.js +191 -0
  15. package/src/commands/cm/stacks/publish-clear-logs.js +82 -0
  16. package/src/commands/cm/stacks/publish-configure.js +46 -0
  17. package/src/commands/cm/stacks/publish-revert.js +102 -0
  18. package/src/commands/cm/stacks/publish.js +110 -0
  19. package/src/commands/cm/stacks/unpublish.js +282 -0
  20. package/src/config/index.js +60 -99
  21. package/src/consumer/publish.js +600 -377
  22. package/src/producer/add-fields.js +209 -189
  23. package/src/producer/cross-publish.js +195 -136
  24. package/src/producer/nonlocalized-field-changes.js +235 -216
  25. package/src/producer/publish-assets.js +104 -98
  26. package/src/producer/publish-edits.js +126 -113
  27. package/src/producer/publish-entries.js +135 -112
  28. package/src/producer/publish-unpublished-env.js +126 -114
  29. package/src/producer/revert.js +261 -230
  30. package/src/producer/unpublish.js +175 -137
  31. package/src/services/publish-only-unpublished.js +130 -0
  32. package/src/util/client.js +21 -17
  33. package/src/util/command-helper.js +25 -0
  34. package/src/util/fs.js +10 -11
  35. package/src/util/index.js +15 -16
  36. package/src/util/logger.js +21 -25
  37. package/src/util/queue.js +13 -13
  38. package/src/util/retryfailed.js +8 -4
  39. package/src/util/store.js +44 -52
  40. package/src/commands/cm/bulk-publish/add-fields.js +0 -117
  41. package/src/commands/cm/bulk-publish/assets.js +0 -117
  42. package/src/commands/cm/bulk-publish/clear.js +0 -63
  43. package/src/commands/cm/bulk-publish/configure.js +0 -46
  44. package/src/commands/cm/bulk-publish/entries.js +0 -125
  45. package/src/commands/cm/bulk-publish/entry-edits.js +0 -123
  46. package/src/commands/cm/bulk-publish/nonlocalized-field-changes.js +0 -116
  47. package/src/commands/cm/bulk-publish/revert.js +0 -81
  48. package/src/commands/cm/bulk-publish/unpublish.js +0 -164
  49. package/src/commands/cm/bulk-publish/unpublished-entries.js +0 -122
  50. package/src/util/request.js +0 -57
@@ -2,443 +2,666 @@
2
2
  /* eslint-disable node/no-unsupported-features/es-syntax */
3
3
  /* eslint-disable no-negated-condition */
4
4
  /* eslint-disable no-console */
5
- const chalk = require('chalk')
6
- const path = require('path')
7
- const req = require('../util/request')
8
- const Configstore = require('configstore')
9
- const defaults = require('../config/defaults.json')
10
- const configstore = new Configstore('contentstack_cli')
11
- const {formatError} = require('../util')
5
+ const chalk = require('chalk');
6
+ const path = require('path');
7
+ const { formatError } = require('../util');
12
8
 
13
- const {getLoggerInstance, addLogs, getLogsDirPath} = require('../util/logger')
14
- const logsDir = getLogsDirPath()
9
+ const { getLoggerInstance, addLogs, getLogsDirPath } = require('../util/logger');
10
+ const logsDir = getLogsDirPath();
15
11
 
16
- let logger
17
- let fileNme
12
+ let logger;
13
+ let fileNme;
18
14
 
19
15
  function initializeLogger(fileName) {
20
- fileNme = fileName
21
- fileNme = `${Date.now()}.${fileNme}`
22
- logger = getLoggerInstance(fileNme)
23
- return path.join(logsDir, fileNme)
16
+ fileNme = fileName;
17
+ fileNme = `${Date.now()}.${fileNme}`;
18
+ logger = getLoggerInstance(fileNme);
19
+ return path.join(logsDir, fileNme);
24
20
  }
25
21
 
26
22
  /* eslint-disable camelcase */
27
23
  function removePublishDetails(elements) {
28
24
  if (elements && elements.length > 0) {
29
- return elements.map(({publish_details, ...rest}) => rest)
25
+ return elements.map(({ _publish_details, ...rest }) => rest);
30
26
  } else {
31
- delete elements.publish_details
27
+ delete elements.publish_details;
32
28
  }
33
- return elements
29
+ return elements;
34
30
  }
35
31
 
36
- async function publishEntry(data, config, queue) {
37
- const lang = []
38
- const entryObj = data.obj
39
- const stack = entryObj.stack
40
- lang.push(entryObj.locale)
41
- stack.contentType(entryObj.content_type).entry(entryObj.entryUid).publish({publishDetails: {environments: entryObj.environments, locales: lang}, locale: entryObj.locale || 'en-us'})
42
- .then(publishEntryResponse => {
43
- if (!publishEntryResponse.error_message) {
44
- console.log(chalk.green(`entry published with ContentType uid=${entryObj.content_type} Entry uid=${entryObj.entryUid} locale=${entryObj.locale}`))
45
- delete entryObj.stack
46
- addLogs(logger, {options: entryObj, api_key: stack.stackHeaders.api_key, alias: stack.alias, host: stack.host}, 'info')
47
- } else {
48
- throw publishEntryResponse
49
- }
50
- })
51
- .catch(error => {
52
- if (error.errorCode === 429 && data.retry < 2) {
53
- data.retry++
54
- queue.Enqueue(data)
55
- } else {
56
- delete entryObj.stack
57
- console.log(chalk.red(`entry could not be published with ContentType uid=${entryObj.content_type} entry uid=${entryObj.entryUid} locale=${entryObj.locale} error=${formatError(error)}`))
58
- addLogs(logger, {options: removePublishDetails(entryObj), api_key: stack.stackHeaders.api_key, alias: stack.alias, host: stack.host}, 'error')
59
- }
60
- })
61
- }
62
-
63
- async function publishAsset(data, config, queue) {
64
- const assetobj = data.obj
65
- const stack = assetobj.stack
66
-
67
- stack.asset(assetobj.assetUid).publish({publishDetails: {environments: assetobj.environments, locales: [assetobj.locale || 'en-us']}})
68
- .then(publishAssetResponse => {
69
- if (!publishAssetResponse.error_message) {
70
- console.log(chalk.green(`asset published with Asset uid=${assetobj.assetUid}, locale=${assetobj.locale}`))
71
- delete assetobj.stack
72
- addLogs(logger, {options: assetobj, api_key: stack.stackHeaders.api_key, alias: stack.alias, host: stack.host}, 'info')
73
- } else {
74
- throw publishAssetResponse
75
- }
76
- })
77
- .catch(error => {
78
- if (error.errorCode === 429 && data.retry < 2) {
79
- data.retry++
80
- queue.Enqueue(data)
81
- } else {
82
- delete assetobj.stack
83
- console.log(chalk.red(`Could not publish because of Error=${formatError(error)}`))
84
- addLogs(logger, {options: removePublishDetails(assetobj), api_key: stack.stackHeaders.api_key, alias: stack.alias, host: stack.host}, 'error')
85
- }
86
- })
87
- }
88
-
89
- async function UnpublishEntry(data, config, queue) {
90
- const lang = []
91
- const entryObj = data.obj
92
- const stack = entryObj.stack
93
- lang.push(entryObj.locale)
94
-
95
- stack.contentType(entryObj.content_type).entry(entryObj.entryUid).unpublish({publishDetails: {environments: entryObj.environments, locales: lang}})
96
- .then(unpublishEntryResponse => {
97
- if (!unpublishEntryResponse.error_message) {
98
- delete entryObj.stack
99
- console.log(chalk.green(`Entry unpublished with ContentType uid=${entryObj.content_type} Entry uid=${entryObj.entryUid} locale=${entryObj.locale}`))
100
- addLogs(logger, {options: entryObj, api_key: stack.stackHeaders.api_key, alias: stack.alias, host: stack.host}, 'info')
101
- } else {
102
- throw unpublishEntryResponse
103
- }
104
- })
105
- .catch(error => {
106
- if (error.errorCode === 429 && data.retry < 2) {
107
- data.retry++
108
- queue.Enqueue(data)
109
- } else {
110
- delete entryObj.stack
111
- console.log(chalk.red(`Entry could not be unpublished with ContentType uid=${entryObj.content_type} Entry uid=${entryObj.entryUid} locale=${entryObj.locale} error=${formatError(error)}`))
112
- addLogs(logger, {options: entryObj, aapi_key: stack.stackHeaders.api_key, alias: stack.alias, host: stack.host}, 'error')
113
- }
114
- })
115
- }
116
-
117
- async function UnpublishAsset(data, config, queue) {
118
- const assetobj = data.obj
119
- const stack = assetobj.stack
120
-
121
- stack.asset(assetobj.assetUid).unpublish({publishDetails: {environments: assetobj.environments, locales: [assetobj.locale || 'en-us']}})
122
- .then(unpublishAssetResponse => {
123
- if (!unpublishAssetResponse.error_message) {
124
- delete assetobj.stack
125
- console.log(`Asset unpublished with Asset uid=${assetobj.assetUid}`)
126
- addLogs(logger, {options: assetobj, api_key: stack.stackHeaders.api_key, alias: stack.alias, host: stack.host}, 'info')
127
- } else {
128
- throw unpublishAssetResponse
129
- }
130
- })
131
- .catch(error => {
132
- if (error.errorCode === 429 && data.retry < 2) {
133
- data.retry++
134
- queue.Enqueue(data)
135
- } else {
136
- delete assetobj.stack
137
- console.log(chalk.red(`Could not Unpublish because of error=${formatError(error)}`))
138
- addLogs(logger, {options: assetobj, api_key: stack.stackHeaders.api_key, alias: stack.alias, host: stack.host}, 'error')
139
- }
140
- })
141
- }
142
-
143
- async function bulkPublish(data, config, queue) {
144
- let conf
145
- const bulkPublishObj = data.obj
146
- const stack = bulkPublishObj.stack
147
- switch (bulkPublishObj.Type) {
148
- case 'entry':
149
- conf = {
150
- entries: removePublishDetails(bulkPublishObj.entries),
151
- locales: [bulkPublishObj.locale],
152
- environments: bulkPublishObj.environments
153
- }
154
- stack.bulkOperation().publish({details: conf})
155
- .then(bulkPublishEntriesResponse => {
156
- if (!bulkPublishEntriesResponse.error_message) {
157
- console.log(chalk.green(`Bulk entries sent for publish ${JSON.stringify(removePublishDetails(bulkPublishObj.entries))}`))
158
- delete bulkPublishObj.stack
159
- addLogs(logger, {options: bulkPublishObj, api_key: stack.stackHeaders.api_key, alias: stack.alias, host: stack.host}, 'info')
32
+ async function publishEntry(data, _config, queue) {
33
+ const lang = [];
34
+ const entryObj = data.obj;
35
+ const stack = entryObj.stack;
36
+ lang.push(entryObj.locale);
37
+ stack
38
+ .contentType(entryObj.content_type)
39
+ .entry(entryObj.entryUid)
40
+ .publish({
41
+ publishDetails: { environments: entryObj.environments, locales: lang },
42
+ locale: entryObj.locale || 'en-us',
43
+ })
44
+ .then((publishEntryResponse) => {
45
+ if (!publishEntryResponse.error_message) {
46
+ console.log(
47
+ chalk.green(
48
+ `entry published with ContentType uid=${entryObj.content_type} Entry uid=${entryObj.entryUid} locale=${entryObj.locale}`,
49
+ ),
50
+ );
51
+ delete entryObj.stack;
52
+ addLogs(
53
+ logger,
54
+ { options: entryObj, api_key: stack.stackHeaders.api_key, alias: stack.alias, host: stack.host },
55
+ 'info',
56
+ );
160
57
  } else {
161
- throw bulkPublishEntriesResponse
58
+ throw publishEntryResponse;
162
59
  }
163
60
  })
164
- .catch(error => {
61
+ .catch((error) => {
165
62
  if (error.errorCode === 429 && data.retry < 2) {
166
- data.retry++
167
- queue.Enqueue(data)
63
+ data.retry++;
64
+ queue.Enqueue(data);
168
65
  } else {
169
- delete bulkPublishObj.stack
170
- const entries = bulkPublishObj.entries.map(entry => entry.uid)
171
- console.log(chalk.red(`Bulk entries ${JSON.stringify(removePublishDetails(bulkPublishObj.entries))} failed to publish with error ${formatError(error)}`))
172
- addLogs(logger, {options: bulkPublishObj, api_key: stack.stackHeaders.api_key, alias: stack.alias, host: stack.host}, 'error')
66
+ delete entryObj.stack;
67
+ console.log(
68
+ chalk.red(
69
+ `entry could not be published with ContentType uid=${entryObj.content_type} entry uid=${entryObj.entryUid
70
+ } locale=${entryObj.locale} error=${formatError(error)}`,
71
+ ),
72
+ );
73
+ addLogs(
74
+ logger,
75
+ {
76
+ options: removePublishDetails(entryObj),
77
+ api_key: stack.stackHeaders.api_key,
78
+ alias: stack.alias,
79
+ host: stack.host,
80
+ },
81
+ 'error',
82
+ );
173
83
  }
174
- })
175
- break
176
- case 'asset':
177
- conf = {
178
- assets: removePublishDetails(bulkPublishObj.assets),
179
- locales: [bulkPublishObj.locale],
180
- environments: bulkPublishObj.environments
181
- }
182
- stack.bulkOperation().publish({details: conf})
183
- .then(bulkPublishAssetsResponse => {
184
- if (!bulkPublishAssetsResponse.error_message) {
185
- console.log(chalk.green(`Bulk assets sent for publish ${JSON.stringify(removePublishDetails(bulkPublishObj.assets))}`))
186
- delete bulkPublishObj.stack
187
- addLogs(logger, {options: bulkPublishObj, api_key: stack.stackHeaders.api_key, alias: stack.alias, host: stack.host}, 'info')
84
+ });
85
+ }
86
+
87
+ async function publishAsset(data, _config, queue) {
88
+ const assetobj = data.obj;
89
+ const stack = assetobj.stack;
90
+
91
+ stack
92
+ .asset(assetobj.assetUid)
93
+ .publish({ publishDetails: { environments: assetobj.environments, locales: [assetobj.locale || 'en-us'] } })
94
+ .then((publishAssetResponse) => {
95
+ if (!publishAssetResponse.error_message) {
96
+ console.log(chalk.green(`asset published with Asset uid=${assetobj.assetUid}, locale=${assetobj.locale}`));
97
+ delete assetobj.stack;
98
+ addLogs(
99
+ logger,
100
+ { options: assetobj, api_key: stack.stackHeaders.api_key, alias: stack.alias, host: stack.host },
101
+ 'info',
102
+ );
188
103
  } else {
189
- throw bulkPublishAssetsResponse
104
+ throw publishAssetResponse;
190
105
  }
191
106
  })
192
- .catch(error => {
107
+ .catch((error) => {
193
108
  if (error.errorCode === 429 && data.retry < 2) {
194
- data.retry++
195
- queue.Enqueue(data)
109
+ data.retry++;
110
+ queue.Enqueue(data);
196
111
  } else {
197
- delete bulkPublishObj.stack
198
- console.log(chalk.red(`Bulk assets ${JSON.stringify(removePublishDetails(bulkPublishObj.assets))} failed to publish with error ${formatError(error)}`))
199
- addLogs(logger, {options: bulkPublishObj, api_key: stack.stackHeaders.api_key, alias: stack.alias, host: stack.host}, 'error')
112
+ delete assetobj.stack;
113
+ console.log(chalk.red(`Could not publish because of Error=${formatError(error)}`));
114
+ addLogs(
115
+ logger,
116
+ {
117
+ options: removePublishDetails(assetobj),
118
+ api_key: stack.stackHeaders.api_key,
119
+ alias: stack.alias,
120
+ host: stack.host,
121
+ },
122
+ 'error',
123
+ );
200
124
  }
201
- })
202
- break
203
- default:
204
- console.log('No such type')
205
- }
125
+ });
206
126
  }
207
127
 
208
- async function bulkUnPublish(data, config, queue) {
209
- let conf
210
- const bulkUnPublishObj = data.obj
211
- const stack = bulkUnPublishObj.stack
212
- switch (bulkUnPublishObj.Type) {
213
- case 'entry':
214
- conf = {
215
- entries: removePublishDetails(bulkUnPublishObj.entries),
216
- locales: [bulkUnPublishObj.locale],
217
- environments: bulkUnPublishObj.environments,
218
- }
219
- stack.bulkOperation().unpublish({details: conf})
220
- .then(bulkUnPublishEntriesResponse => {
221
- if (!bulkUnPublishEntriesResponse.error_message) {
222
- delete bulkUnPublishObj.stack
223
- console.log(chalk.green(`Bulk entries sent for Unpublish ${JSON.stringify(removePublishDetails(bulkUnPublishObj.entries))}`))
224
- addLogs(logger, {options: bulkUnPublishObj, api_key: stack.stackHeaders.api_key, alias: stack.alias, host: stack.host}, 'info')
128
+ async function UnpublishEntry(data, _config, queue) {
129
+ const lang = [];
130
+ const entryObj = data.obj;
131
+ const stack = entryObj.stack;
132
+ lang.push(entryObj.locale);
133
+ stack
134
+ .contentType(entryObj.content_type)
135
+ .entry(entryObj.entryUid)
136
+ .unpublish({ publishDetails: { environments: entryObj.environments, locales: lang }, locale: entryObj.locale })
137
+ .then((unpublishEntryResponse) => {
138
+ if (!unpublishEntryResponse.error_message) {
139
+ delete entryObj.stack;
140
+ console.log(
141
+ chalk.green(
142
+ `Entry unpublished with ContentType uid=${entryObj.content_type} Entry uid=${entryObj.entryUid} locale=${entryObj.locale}`,
143
+ ),
144
+ );
145
+ addLogs(
146
+ logger,
147
+ { options: entryObj, api_key: stack.stackHeaders.api_key, alias: stack.alias, host: stack.host },
148
+ 'info',
149
+ );
225
150
  } else {
226
- throw bulkUnPublishEntriesResponse
151
+ throw unpublishEntryResponse;
227
152
  }
228
153
  })
229
- .catch(error => {
154
+ .catch((error) => {
230
155
  if (error.errorCode === 429 && data.retry < 2) {
231
- data.retry++
232
- queue.Enqueue(data)
156
+ data.retry++;
157
+ queue.Enqueue(data);
233
158
  } else {
234
- delete bulkUnPublishObj.stack
235
- console.log(chalk.red(`Bulk entries ${JSON.stringify(removePublishDetails(bulkUnPublishObj.entries))} failed to Unpublish with error ${formatError(error)}`))
236
- addLogs(logger, {options: bulkUnPublishObj, api_key: stack.stackHeaders.api_key, alias: stack.alias, host: stack.host}, 'error')
159
+ delete entryObj.stack;
160
+ console.log(
161
+ chalk.red(
162
+ `Entry could not be unpublished with ContentType uid=${entryObj.content_type} Entry uid=${entryObj.entryUid
163
+ } locale=${entryObj.locale} error=${formatError(error)}`,
164
+ ),
165
+ );
166
+ addLogs(
167
+ logger,
168
+ { options: entryObj, aapi_key: stack.stackHeaders.api_key, alias: stack.alias, host: stack.host },
169
+ 'error',
170
+ );
237
171
  }
238
- })
239
- break
240
- case 'asset':
241
- conf = {
242
- assets: removePublishDetails(bulkUnPublishObj.assets),
243
- locales: [bulkUnPublishObj.locale || 'en-us'],
244
- environments: bulkUnPublishObj.environments,
245
- }
246
- stack.bulkOperation().unpublish({details: conf})
247
- .then(bulkUnPublishAssetsResponse => {
248
- if (!bulkUnPublishAssetsResponse.error_message) {
249
- delete bulkUnPublishObj.stack
250
- console.log(chalk.green(`Bulk assets sent for Unpublish ${JSON.stringify(removePublishDetails(bulkUnPublishObj.assets))}`))
251
- addLogs(logger, {options: bulkUnPublishObj, api_key: stack.stackHeaders.api_key, alias: stack.alias, host: stack.host}, 'info')
172
+ });
173
+ }
174
+
175
+ async function UnpublishAsset(data, _config, queue) {
176
+ const assetobj = data.obj;
177
+ const stack = assetobj.stack;
178
+
179
+ stack
180
+ .asset(assetobj.assetUid)
181
+ .unpublish({ publishDetails: { environments: assetobj.environments, locales: [assetobj.locale || 'en-us'] } })
182
+ .then((unpublishAssetResponse) => {
183
+ if (!unpublishAssetResponse.error_message) {
184
+ delete assetobj.stack;
185
+ console.log(`Asset unpublished with Asset uid=${assetobj.assetUid}`);
186
+ addLogs(
187
+ logger,
188
+ { options: assetobj, api_key: stack.stackHeaders.api_key, alias: stack.alias, host: stack.host },
189
+ 'info',
190
+ );
252
191
  } else {
253
- throw bulkUnPublishAssetsResponse
192
+ throw unpublishAssetResponse;
254
193
  }
255
194
  })
256
- .catch(error => {
195
+ .catch((error) => {
257
196
  if (error.errorCode === 429 && data.retry < 2) {
258
- data.retry++
259
- queue.Enqueue(data)
197
+ data.retry++;
198
+ queue.Enqueue(data);
260
199
  } else {
261
- delete bulkUnPublishObj.stack
262
- console.log(chalk.red(`Bulk assets ${JSON.stringify(removePublishDetails(bulkUnPublishObj.assets))} failed to Unpublish with error ${formatError(error)}`))
263
- addLogs(logger, {options: bulkUnPublishObj, api_key: stack.stackHeaders.api_key, alias: stack.alias, host: stack.host}, 'error')
200
+ delete assetobj.stack;
201
+ console.log(chalk.red(`Could not Unpublish because of error=${formatError(error)}`));
202
+ addLogs(
203
+ logger,
204
+ { options: assetobj, api_key: stack.stackHeaders.api_key, alias: stack.alias, host: stack.host },
205
+ 'error',
206
+ );
264
207
  }
265
- })
266
- break
267
- default:
268
- console.log('No such type')
269
- }
208
+ });
270
209
  }
271
210
 
272
- // short-term fix for reverting to previous versions
273
- /* eslint-disable no-case-declarations */
274
- async function publishUsingVersion(data, config, queue) {
275
- let conf
276
- let successfullyPublished = []
277
- let failedToPublish = []
278
- let counter = 0
279
- const bulkPublishObj = data.obj
280
- const stack = bulkPublishObj.stack
281
- // addLogs(logger,bulkPublishObj);
211
+ async function performBulkPublish(data, _config, queue) {
212
+ let conf;
213
+ const bulkPublishObj = data.obj;
214
+ const stack = bulkPublishObj.stack;
282
215
  switch (bulkPublishObj.Type) {
283
- case 'entry':
284
- successfullyPublished = []
285
- failedToPublish = []
286
- counter = 0
287
- const aggregatedEntries = {
288
- ...bulkPublishObj,
289
- }
290
- bulkPublishObj.entries.forEach(async entry => {
216
+ case 'entry':
291
217
  conf = {
292
- publishDetails: {
293
- environments: bulkPublishObj.environments,
294
- locales: [bulkPublishObj.locale]
295
- },
296
- locale: bulkPublishObj.locale,
297
- version: entry.version
298
- }
299
- stack.contentType(entry.content_type).entry(entry.uid).publish(conf)
300
- .then(publishEntriesResponse => {
301
- if (!publishEntriesResponse.error_message) {
302
- console.log(chalk.green(`Entry=${entry.uid} sent for publish`))
303
-
304
- counter += 1
305
-
306
- successfullyPublished.push({
307
- ...entry,
308
- })
309
-
310
- if (counter === bulkPublishObj.entries.length) {
311
- if (successfullyPublished.length > 0) {
312
- aggregatedEntries.entries = successfullyPublished
313
- addLogs(logger, {options: aggregatedEntries, api_key: stack.stackHeaders.api_key, alias: stack.alias, host: stack.host}, 'info')
314
- }
315
-
316
- if (failedToPublish.length > 0) {
317
- aggregatedEntries.entries = failedToPublish
318
- addLogs(logger, {options: bulkPublishObj, api_key: stack.stackHeaders.api_key, alias: stack.alias, host: stack.host}, 'error')
319
- }
218
+ entries: removePublishDetails(bulkPublishObj.entries),
219
+ locales: [bulkPublishObj.locale],
220
+ environments: bulkPublishObj.environments,
221
+ };
222
+ stack
223
+ .bulkOperation()
224
+ .publish({ details: conf })
225
+ .then((bulkPublishEntriesResponse) => {
226
+ if (!bulkPublishEntriesResponse.error_message) {
227
+ console.log(
228
+ chalk.green(
229
+ `Bulk entries sent for publish ${JSON.stringify(removePublishDetails(bulkPublishObj.entries))}`,
230
+ ),
231
+ );
232
+ delete bulkPublishObj.stack;
233
+ addLogs(
234
+ logger,
235
+ { options: bulkPublishObj, api_key: stack.stackHeaders.api_key, alias: stack.alias, host: stack.host },
236
+ 'info',
237
+ );
238
+ } else {
239
+ throw bulkPublishEntriesResponse;
320
240
  }
321
- } else {
322
- failedToPublish.push({
323
- ...entry,
324
- })
325
-
326
- // throw bulkPublishEntriesResponse;
327
- }
328
- })
329
- .catch(error => {
330
- if (error.errorCode === 429 && data.retry < 2) {
331
- data.retry++
332
- queue.Enqueue(data)
333
- } else {
334
- counter += 1
335
-
336
- failedToPublish.push({
337
- ...entry,
338
- })
339
-
340
- if (counter === bulkPublishObj.entries.length) {
341
- if (successfullyPublished.length > 0) {
342
- aggregatedEntries.entries = successfullyPublished
343
- addLogs(logger, {options: aggregatedEntries, api_key: stack.stackHeaders.api_key, alias: stack.alias, host: stack.host}, 'info')
344
- }
345
-
346
- if (failedToPublish.length > 0) {
347
- aggregatedEntries.entries = failedToPublish
348
- addLogs(logger, {options: bulkPublishObj, api_key: stack.stackHeaders.api_key, alias: stack.alias, host: stack.host}, 'error')
349
- }
241
+ })
242
+ .catch((error) => {
243
+ if (error.errorCode === 429 && data.retry < 2) {
244
+ data.retry++;
245
+ queue.Enqueue(data);
246
+ } else {
247
+ delete bulkPublishObj.stack;
248
+ console.log(
249
+ chalk.red(
250
+ `Bulk entries ${JSON.stringify(
251
+ removePublishDetails(bulkPublishObj.entries),
252
+ )} failed to publish with error ${formatError(error)}`,
253
+ ),
254
+ );
255
+ addLogs(
256
+ logger,
257
+ { options: bulkPublishObj, api_key: stack.stackHeaders.api_key, alias: stack.alias, host: stack.host },
258
+ 'error',
259
+ );
350
260
  }
351
-
352
- console.log(chalk.red(`Entry=${entry.uid} failed to publish with error ${formatError(error)}`))
353
- }
354
- })
355
- })
356
- break
357
- case 'asset':
358
- successfullyPublished = []
359
- failedToPublish = []
360
- counter = 0
361
- const aggregatedAssets = {
362
- ...bulkPublishObj,
363
- }
364
- bulkPublishObj.assets.forEach(async asset => {
261
+ });
262
+ break;
263
+ case 'asset':
365
264
  conf = {
366
- publishDetails: {
367
- environments: bulkPublishObj.environments,
368
- locales: [bulkPublishObj.locale],
369
- },
370
- version: asset.version
371
- }
372
- stack.asset(asset.uid).publish(conf)
373
- .then(publishAssetsResponse => {
374
- if (!publishAssetsResponse.error_message) {
375
- console.log(chalk.green(`Asset=${asset.uid} sent for publish`))
265
+ assets: removePublishDetails(bulkPublishObj.assets),
266
+ locales: [bulkPublishObj.locale],
267
+ environments: bulkPublishObj.environments,
268
+ };
269
+ stack
270
+ .bulkOperation()
271
+ .publish({ details: conf })
272
+ .then((bulkPublishAssetsResponse) => {
273
+ if (!bulkPublishAssetsResponse.error_message) {
274
+ console.log(
275
+ chalk.green(
276
+ `Bulk assets sent for publish ${JSON.stringify(removePublishDetails(bulkPublishObj.assets))}`,
277
+ ),
278
+ );
279
+ delete bulkPublishObj.stack;
280
+ addLogs(
281
+ logger,
282
+ { options: bulkPublishObj, api_key: stack.stackHeaders.api_key, alias: stack.alias, host: stack.host },
283
+ 'info',
284
+ );
285
+ } else {
286
+ throw bulkPublishAssetsResponse;
287
+ }
288
+ })
289
+ .catch((error) => {
290
+ if (error.errorCode === 429 && data.retry < 2) {
291
+ data.retry++;
292
+ queue.Enqueue(data);
293
+ } else {
294
+ delete bulkPublishObj.stack;
295
+ console.log(
296
+ chalk.red(
297
+ `Bulk assets ${JSON.stringify(
298
+ removePublishDetails(bulkPublishObj.assets),
299
+ )} failed to publish with error ${formatError(error)}`,
300
+ ),
301
+ );
302
+ addLogs(
303
+ logger,
304
+ { options: bulkPublishObj, api_key: stack.stackHeaders.api_key, alias: stack.alias, host: stack.host },
305
+ 'error',
306
+ );
307
+ }
308
+ });
309
+ break;
310
+ default:
311
+ console.log('No such type');
312
+ }
313
+ }
376
314
 
377
- counter += 1
315
+ async function performBulkUnPublish(data, _config, queue) {
316
+ let conf;
317
+ const bulkUnPublishObj = data.obj;
318
+ const stack = bulkUnPublishObj.stack;
319
+ switch (bulkUnPublishObj.Type) {
320
+ case 'entry':
321
+ conf = {
322
+ entries: removePublishDetails(bulkUnPublishObj.entries),
323
+ locales: [bulkUnPublishObj.locale],
324
+ environments: bulkUnPublishObj.environments,
325
+ };
326
+ stack
327
+ .bulkOperation()
328
+ .unpublish({ details: conf })
329
+ .then((bulkUnPublishEntriesResponse) => {
330
+ if (!bulkUnPublishEntriesResponse.error_message) {
331
+ delete bulkUnPublishObj.stack;
332
+ console.log(
333
+ chalk.green(
334
+ `Bulk entries sent for Unpublish ${JSON.stringify(removePublishDetails(bulkUnPublishObj.entries))}`,
335
+ ),
336
+ );
337
+ addLogs(
338
+ logger,
339
+ { options: bulkUnPublishObj, api_key: stack.stackHeaders.api_key, alias: stack.alias, host: stack.host },
340
+ 'info',
341
+ );
342
+ } else {
343
+ throw bulkUnPublishEntriesResponse;
344
+ }
345
+ })
346
+ .catch((error) => {
347
+ if (error.errorCode === 429 && data.retry < 2) {
348
+ data.retry++;
349
+ queue.Enqueue(data);
350
+ } else {
351
+ delete bulkUnPublishObj.stack;
352
+ console.log(
353
+ chalk.red(
354
+ `Bulk entries ${JSON.stringify(
355
+ removePublishDetails(bulkUnPublishObj.entries),
356
+ )} failed to Unpublish with error ${formatError(error)}`,
357
+ ),
358
+ );
359
+ addLogs(
360
+ logger,
361
+ { options: bulkUnPublishObj, api_key: stack.stackHeaders.api_key, alias: stack.alias, host: stack.host },
362
+ 'error',
363
+ );
364
+ }
365
+ });
366
+ break;
367
+ case 'asset':
368
+ conf = {
369
+ assets: removePublishDetails(bulkUnPublishObj.assets),
370
+ locales: [bulkUnPublishObj.locale || 'en-us'],
371
+ environments: bulkUnPublishObj.environments,
372
+ };
373
+ stack
374
+ .bulkOperation()
375
+ .unpublish({ details: conf })
376
+ .then((bulkUnPublishAssetsResponse) => {
377
+ if (!bulkUnPublishAssetsResponse.error_message) {
378
+ delete bulkUnPublishObj.stack;
379
+ console.log(
380
+ chalk.green(
381
+ `Bulk assets sent for Unpublish ${JSON.stringify(removePublishDetails(bulkUnPublishObj.assets))}`,
382
+ ),
383
+ );
384
+ addLogs(
385
+ logger,
386
+ { options: bulkUnPublishObj, api_key: stack.stackHeaders.api_key, alias: stack.alias, host: stack.host },
387
+ 'info',
388
+ );
389
+ } else {
390
+ throw bulkUnPublishAssetsResponse;
391
+ }
392
+ })
393
+ .catch((error) => {
394
+ if (error.errorCode === 429 && data.retry < 2) {
395
+ data.retry++;
396
+ queue.Enqueue(data);
397
+ } else {
398
+ delete bulkUnPublishObj.stack;
399
+ console.log(
400
+ chalk.red(
401
+ `Bulk assets ${JSON.stringify(
402
+ removePublishDetails(bulkUnPublishObj.assets),
403
+ )} failed to Unpublish with error ${formatError(error)}`,
404
+ ),
405
+ );
406
+ addLogs(
407
+ logger,
408
+ { options: bulkUnPublishObj, api_key: stack.stackHeaders.api_key, alias: stack.alias, host: stack.host },
409
+ 'error',
410
+ );
411
+ }
412
+ });
413
+ break;
414
+ default:
415
+ console.log('No such type');
416
+ }
417
+ }
378
418
 
379
- successfullyPublished.push({
380
- ...asset,
419
+ // short-term fix for reverting to previous versions
420
+ /* eslint-disable no-case-declarations */
421
+ async function publishUsingVersion(data, _config, queue) {
422
+ let conf;
423
+ let successfullyPublished = [];
424
+ let failedToPublish = [];
425
+ let counter = 0;
426
+ const bulkPublishObj = data.obj;
427
+ const stack = bulkPublishObj.stack;
428
+ switch (bulkPublishObj.Type) {
429
+ case 'entry':
430
+ successfullyPublished = [];
431
+ failedToPublish = [];
432
+ counter = 0;
433
+ const aggregatedEntries = {
434
+ ...bulkPublishObj,
435
+ };
436
+ bulkPublishObj.entries.forEach(async (entry) => {
437
+ conf = {
438
+ publishDetails: {
439
+ environments: bulkPublishObj.environments,
440
+ locales: [bulkPublishObj.locale],
441
+ },
442
+ locale: bulkPublishObj.locale,
443
+ version: entry.version,
444
+ };
445
+ stack
446
+ .contentType(entry.content_type)
447
+ .entry(entry.uid)
448
+ .publish(conf)
449
+ .then((publishEntriesResponse) => {
450
+ if (!publishEntriesResponse.error_message) {
451
+ console.log(chalk.green(`Entry=${entry.uid} sent for publish`));
452
+
453
+ counter += 1;
454
+
455
+ successfullyPublished.push({
456
+ ...entry,
457
+ });
458
+
459
+ if (counter === bulkPublishObj.entries.length) {
460
+ if (successfullyPublished.length > 0) {
461
+ aggregatedEntries.entries = successfullyPublished;
462
+ addLogs(
463
+ logger,
464
+ {
465
+ options: aggregatedEntries,
466
+ api_key: stack.stackHeaders.api_key,
467
+ alias: stack.alias,
468
+ host: stack.host,
469
+ },
470
+ 'info',
471
+ );
472
+ }
473
+
474
+ if (failedToPublish.length > 0) {
475
+ aggregatedEntries.entries = failedToPublish;
476
+ addLogs(
477
+ logger,
478
+ {
479
+ options: bulkPublishObj,
480
+ api_key: stack.stackHeaders.api_key,
481
+ alias: stack.alias,
482
+ host: stack.host,
483
+ },
484
+ 'error',
485
+ );
486
+ }
487
+ }
488
+ } else {
489
+ failedToPublish.push({
490
+ ...entry,
491
+ });
492
+
493
+ // throw bulkPublishEntriesResponse;
494
+ }
381
495
  })
382
-
383
- if (counter === bulkPublishObj.assets.length) {
384
- if (successfullyPublished.length > 0) {
385
- aggregatedAssets.assets = successfullyPublished
386
- addLogs(logger, {options: aggregatedAssets, api_key: stack.stackHeaders.api_key, alias: stack.alias, host: stack.host}, 'info')
496
+ .catch((error) => {
497
+ if (error.errorCode === 429 && data.retry < 2) {
498
+ data.retry++;
499
+ queue.Enqueue(data);
500
+ } else {
501
+ counter += 1;
502
+
503
+ failedToPublish.push({
504
+ ...entry,
505
+ });
506
+
507
+ if (counter === bulkPublishObj.entries.length) {
508
+ if (successfullyPublished.length > 0) {
509
+ aggregatedEntries.entries = successfullyPublished;
510
+ addLogs(
511
+ logger,
512
+ {
513
+ options: aggregatedEntries,
514
+ api_key: stack.stackHeaders.api_key,
515
+ alias: stack.alias,
516
+ host: stack.host,
517
+ },
518
+ 'info',
519
+ );
520
+ }
521
+
522
+ if (failedToPublish.length > 0) {
523
+ aggregatedEntries.entries = failedToPublish;
524
+ addLogs(
525
+ logger,
526
+ {
527
+ options: bulkPublishObj,
528
+ api_key: stack.stackHeaders.api_key,
529
+ alias: stack.alias,
530
+ host: stack.host,
531
+ },
532
+ 'error',
533
+ );
534
+ }
535
+ }
536
+
537
+ console.log(chalk.red(`Entry=${entry.uid} failed to publish with error ${formatError(error)}`));
387
538
  }
388
-
389
- if (failedToPublish.length > 0) {
390
- aggregatedAssets.assets = failedToPublish
391
- addLogs(logger, {options: bulkPublishObj, api_key: stack.stackHeaders.api_key, alias: stack.alias, host: stack.host}, 'error')
539
+ });
540
+ });
541
+ break;
542
+ case 'asset':
543
+ successfullyPublished = [];
544
+ failedToPublish = [];
545
+ counter = 0;
546
+ const aggregatedAssets = {
547
+ ...bulkPublishObj,
548
+ };
549
+ bulkPublishObj.assets.forEach(async (asset) => {
550
+ conf = {
551
+ publishDetails: {
552
+ environments: bulkPublishObj.environments,
553
+ locales: [bulkPublishObj.locale],
554
+ },
555
+ version: asset.version,
556
+ };
557
+ stack
558
+ .asset(asset.uid)
559
+ .publish(conf)
560
+ .then((publishAssetsResponse) => {
561
+ if (!publishAssetsResponse.error_message) {
562
+ console.log(chalk.green(`Asset=${asset.uid} sent for publish`));
563
+
564
+ counter += 1;
565
+
566
+ successfullyPublished.push({
567
+ ...asset,
568
+ });
569
+
570
+ if (counter === bulkPublishObj.assets.length) {
571
+ if (successfullyPublished.length > 0) {
572
+ aggregatedAssets.assets = successfullyPublished;
573
+ addLogs(
574
+ logger,
575
+ {
576
+ options: aggregatedAssets,
577
+ api_key: stack.stackHeaders.api_key,
578
+ alias: stack.alias,
579
+ host: stack.host,
580
+ },
581
+ 'info',
582
+ );
583
+ }
584
+
585
+ if (failedToPublish.length > 0) {
586
+ aggregatedAssets.assets = failedToPublish;
587
+ addLogs(
588
+ logger,
589
+ {
590
+ options: bulkPublishObj,
591
+ api_key: stack.stackHeaders.api_key,
592
+ alias: stack.alias,
593
+ host: stack.host,
594
+ },
595
+ 'error',
596
+ );
597
+ }
598
+ }
599
+ } else {
600
+ failedToPublish.push({
601
+ ...asset,
602
+ });
603
+
604
+ // throw bulkPublishAssetsResponse;
392
605
  }
393
- }
394
- } else {
395
- failedToPublish.push({
396
- ...asset,
397
606
  })
398
-
399
- // throw bulkPublishAssetsResponse;
400
- }
401
- })
402
- .catch(error => {
403
- if (error.errorCode === 429 && data.retry < 2) {
404
- data.retry++
405
- queue.Enqueue(data)
406
- } else {
407
- counter += 1
408
-
409
- failedToPublish.push({
410
- ...asset,
411
- })
412
-
413
- if (counter === bulkPublishObj.assets.length) {
414
- if (successfullyPublished.length > 0) {
415
- aggregatedAssets.assets = successfullyPublished
416
- addLogs(logger, {options: aggregatedAssets, api_key: stack.stackHeaders.api_key, alias: stack.alias, host: stack.host}, 'info')
417
- }
418
-
419
- if (failedToPublish.length > 0) {
420
- aggregatedAssets.assets = failedToPublish
421
- addLogs(logger, {options: bulkPublishObj, api_key: stack.stackHeaders.api_key, alias: stack.alias, host: stack.host}, 'error')
607
+ .catch((error) => {
608
+ if (error.errorCode === 429 && data.retry < 2) {
609
+ data.retry++;
610
+ queue.Enqueue(data);
611
+ } else {
612
+ counter += 1;
613
+
614
+ failedToPublish.push({
615
+ ...asset,
616
+ });
617
+
618
+ if (counter === bulkPublishObj.assets.length) {
619
+ if (successfullyPublished.length > 0) {
620
+ aggregatedAssets.assets = successfullyPublished;
621
+ addLogs(
622
+ logger,
623
+ {
624
+ options: aggregatedAssets,
625
+ api_key: stack.stackHeaders.api_key,
626
+ alias: stack.alias,
627
+ host: stack.host,
628
+ },
629
+ 'info',
630
+ );
631
+ }
632
+
633
+ if (failedToPublish.length > 0) {
634
+ aggregatedAssets.assets = failedToPublish;
635
+ addLogs(
636
+ logger,
637
+ {
638
+ options: bulkPublishObj,
639
+ api_key: stack.stackHeaders.api_key,
640
+ alias: stack.alias,
641
+ host: stack.host,
642
+ },
643
+ 'error',
644
+ );
645
+ }
646
+ }
647
+
648
+ console.log(chalk.red(`Asset=${asset.uid} failed to publish with error ${formatError(error)}`));
422
649
  }
423
- }
424
-
425
- console.log(chalk.red(`Asset=${asset.uid} failed to publish with error ${formatError(error)}`))
426
- }
427
- })
428
- })
429
- break
430
- default:
431
- console.log('No such type')
650
+ });
651
+ });
652
+ break;
653
+ default:
654
+ console.log('No such type');
432
655
  }
433
656
  }
434
657
 
435
658
  module.exports = {
436
- bulkPublish,
437
- bulkUnPublish,
659
+ performBulkPublish,
660
+ performBulkUnPublish,
438
661
  initializeLogger,
439
662
  publishEntry,
440
663
  publishAsset,
441
664
  UnpublishEntry,
442
665
  UnpublishAsset,
443
666
  publishUsingVersion,
444
- }
667
+ };