@axway/axway-central-cli 3.2.0 → 3.4.0-rc.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.
@@ -27,7 +27,8 @@ const action = async ({
27
27
  output,
28
28
  region,
29
29
  cache,
30
- yes
30
+ yes,
31
+ language
31
32
  } = argv;
32
33
  let isCmdError = false;
33
34
 
@@ -74,7 +75,7 @@ const action = async ({
74
75
  render.startSpin('Creating or updating resource(s)');
75
76
  }
76
77
  const sortedKindsMap = defsManager.getSortedKindsMap();
77
- results = await client.bulkCreateOrUpdate(docs, sortedKindsMap);
78
+ results = await client.bulkCreateOrUpdate(docs, sortedKindsMap, language);
78
79
  render.bulkCreateOrUpdateResult(results, 'has successfully been created.', 'has successfully been updated.', 'was created with an autogenerated logical name.');
79
80
  isCmdError = results.created.error.length > 0 || results.updated.error.length > 0;
80
81
  } catch (e) {
@@ -104,6 +105,10 @@ const apply = exports.apply = {
104
105
  desc: `Filename to use to create or update the resources. One of: yaml | json`,
105
106
  type: 'string'
106
107
  },
107
- '-y, --yes': 'Automatically reply "yes" to any command prompts.'
108
+ '-y, --yes': 'Automatically reply "yes" to any command prompts.',
109
+ '--language=[langCode]': {
110
+ desc: `Language Codes. One of: Comma Separated values of ${_types.LanguageTypes.French} | ${_types.LanguageTypes.US} | ${_types.LanguageTypes.German} | ${_types.LanguageTypes.Portugese}`,
111
+ type: 'string'
112
+ }
108
113
  }
109
114
  };
@@ -16,20 +16,22 @@ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e
16
16
  const {
17
17
  log
18
18
  } = (0, _snooplogg.default)('central: get');
19
- const getListOrByName = async (resourceDef, client, scopeName, resourceName, scopeDef, query, progressListener, expand) => {
19
+ const getListOrByName = async (resourceDef, client, scopeName, resourceName, scopeDef, query, progressListener, expand, langDef) => {
20
20
  return resourceName ? await client.getResourceByName({
21
21
  resourceDef,
22
22
  resourceName,
23
23
  scopeDef,
24
24
  scopeName,
25
- expand
25
+ expand,
26
+ langDef
26
27
  }) : await client.getResourcesList({
27
28
  resourceDef,
28
29
  scopeDef,
29
30
  scopeName,
30
31
  query,
31
32
  progressListener,
32
- expand
33
+ expand,
34
+ langDef
33
35
  });
34
36
  };
35
37
  const get = exports.get = {
@@ -73,8 +75,16 @@ const get = exports.get = {
73
75
  const defsManager = await new _DefinitionsManager.DefinitionsManager(client).init();
74
76
  const scope = (0, _utils.parseScopeParam)(argv.scope);
75
77
  let languageExpand = argv.language;
78
+ const languageDefinition = argv.languageDefinition;
76
79
  const formattedFilter = (0, _utils.transformSimpleFilters)(title, attribute, tag);
77
80
  const query = argv.query ? argv.query : formattedFilter;
81
+ // verify either "--language" or "--languageDefinition" argument is passed and error when both are passed
82
+ if (languageExpand && languageDefinition) {
83
+ throw Error('You must specify either of the "--language" or "--languageDefinition" argument and not both.');
84
+ }
85
+ if (languageDefinition && !argv.output) {
86
+ throw Error('The "--languageDefinition" argument can only be used with output(-o,--output) argument');
87
+ }
78
88
  if (languageExpand) {
79
89
  // when "*" is provided, expand all supported languages
80
90
  let lang = "";
@@ -149,7 +159,7 @@ ${defsManager.getDefsTableForHelpMsg()}`);
149
159
  */
150
160
  if (scope) {
151
161
  const results = await Promise.all(defs.filter(defs => !scope.kind || !defs.scope || defs.scope.spec.kind === scope.kind).map(async defs => ({
152
- response: await getListOrByName(defs.resource, client, scope.name, resourceName, defs.scope, query, progressListener, languageExpand),
162
+ response: await getListOrByName(defs.resource, client, scope.name, resourceName, defs.scope, query, progressListener, languageExpand, languageDefinition),
153
163
  cli: defs.cli
154
164
  })));
155
165
  results.forEach(({
@@ -169,7 +179,7 @@ ${defsManager.getDefsTableForHelpMsg()}`);
169
179
  }
170
180
  });
171
181
  const results = await Promise.all(Object.values(defsMatchingGroup).map(async defs => ({
172
- response: await getListOrByName(defs.resource, client, undefined, resourceName, undefined, query, progressListener, languageExpand),
182
+ response: await getListOrByName(defs.resource, client, undefined, resourceName, undefined, query, progressListener, languageExpand, languageDefinition),
173
183
  cli: defs.cli
174
184
  })));
175
185
  results.forEach(({
@@ -191,7 +201,7 @@ ${defsManager.getDefsTableForHelpMsg()}`);
191
201
 
192
202
  // considering the command successful if at least 1 response found
193
203
  isCmdError = !getResults.filter(res => res.response.data !== null).length;
194
- renderer.renderGetResults(getResults, 'Resource(s) successfully retrieved');
204
+ renderer.renderGetResults(getResults, 'Resource(s) successfully retrieved', languageDefinition);
195
205
  } catch (e) {
196
206
  log('command error', e);
197
207
  isCmdError = true;
@@ -231,8 +241,11 @@ ${defsManager.getDefsTableForHelpMsg()}`);
231
241
  },
232
242
  '--team [guid|name]': 'The team name or guid to use',
233
243
  '--no-owner': 'Returns resources which do not have an owner',
234
- '--language [langCode]': {
244
+ '--language=[langCode]': {
235
245
  desc: `Show the language detail of the retruned object. One of: * | Comma Separated values of ${_types.LanguageTypes.French} | ${_types.LanguageTypes.US} | ${_types.LanguageTypes.German} | ${_types.LanguageTypes.Portugese}`
246
+ },
247
+ '--languageDefinition=[langCode]': {
248
+ desc: `Show the language definition constraint of the returned object. One of: Comma Separated values of ${_types.LanguageTypes.French} | ${_types.LanguageTypes.US} | ${_types.LanguageTypes.German} | ${_types.LanguageTypes.Portugese}`
236
249
  }
237
250
  }
238
251
  };
@@ -12,6 +12,7 @@ var _CacheController = require("./CacheController");
12
12
  var _dataService = require("./dataService");
13
13
  var _types = require("./types");
14
14
  var _utils = require("./utils");
15
+ var _chalk = _interopRequireDefault(require("chalk"));
15
16
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
16
17
  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
17
18
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
@@ -65,14 +66,60 @@ class ApiServerClient {
65
66
  scopeDef,
66
67
  scopeName,
67
68
  version = ApiServerVersions.v1alpha1,
68
- expand
69
+ expand,
70
+ langDef
69
71
  }) {
70
72
  const groupUrl = `/${resourceDef.metadata.scope.name}/${version}`;
71
73
  const scopeUrl = scopeName && scopeDef ? `/${scopeDef.spec.plural}/${encodeURIComponent(scopeName)}` : '';
72
74
  const resourceUrl = `/${resourceDef.spec.plural}`;
73
75
  const nameUrl = resourceName ? `/${encodeURIComponent(resourceName)}` : '';
74
76
  const expandUrl = expand ? `?expand=${expand}` : '';
75
- return `${groupUrl}${scopeUrl}${resourceUrl}${nameUrl}${expandUrl}`;
77
+ const langDefUrl = langDef ? this.buildLanguageDefinitionUrl({
78
+ langCode: langDef
79
+ }) : '';
80
+ if (expand) {
81
+ return `${groupUrl}${scopeUrl}${resourceUrl}${nameUrl}${expandUrl}`;
82
+ } else if (langDef) {
83
+ return `${groupUrl}${scopeUrl}${resourceUrl}${nameUrl}${langDefUrl}`;
84
+ } else {
85
+ return `${groupUrl}${scopeUrl}${resourceUrl}${nameUrl}`;
86
+ }
87
+ }
88
+
89
+ /**
90
+ * Build language definition url based on the language code.
91
+ */
92
+ buildLanguageDefinitionUrl({
93
+ langCode
94
+ }) {
95
+ let langDefUrl = '';
96
+ let i = 0;
97
+ let embed = '?embed=';
98
+ let expand = '&expand=languages,';
99
+ let fields = '&fields=languages,group,apiVersion,name,kind,metadata,';
100
+ const langCodeArr = langCode.split(',');
101
+ let languageTypesArr = [];
102
+ Object.keys(_types.LanguageTypes).forEach(key => languageTypesArr.push((0, _utils.ValueFromKey)(_types.LanguageTypes, key)));
103
+ langCodeArr.forEach(code => {
104
+ if (code.trim() != '') {
105
+ if (!languageTypesArr.includes(code)) {
106
+ console.log(_chalk.default.yellow(`\n\'${code}\' language code is not supported. Allowed language codes: ${_types.LanguageTypes.French} | ${_types.LanguageTypes.German} | ${_types.LanguageTypes.US} | ${_types.LanguageTypes.Portugese}.'`));
107
+ } else {
108
+ if (i < langCodeArr.length - 1) {
109
+ embed = embed + `languages-${code.trim()}.resource` + ",";
110
+ expand = expand + `languages-${code.trim()}` + ",";
111
+ fields = fields + `languages-${code.trim()}.values` + ",";
112
+ } else {
113
+ embed = embed + `languages-${code.trim()}.resource`;
114
+ expand = expand + `languages-${code.trim()}`;
115
+ fields = fields + `languages-${code.trim()}.values`;
116
+ }
117
+ }
118
+ }
119
+ i++;
120
+ });
121
+ langDefUrl = `${embed}${expand}${fields}`;
122
+ return langDefUrl;
76
123
  }
77
124
 
78
125
  /**
@@ -94,7 +141,9 @@ class ApiServerClient {
94
141
  resourceDef,
95
142
  scopeDef,
96
143
  scopeName,
97
- version = ApiServerVersions.v1alpha1
144
+ version = ApiServerVersions.v1alpha1,
145
+ createAction,
146
+ language
98
147
  }) {
99
148
  var _resourceDef$spec$sub, _resourceDef$spec$sub2;
100
149
  const service = await (0, _dataService.dataService)({
@@ -112,6 +161,28 @@ class ApiServerClient {
112
161
  });
113
162
  const knownSubResourcesNames = (_resourceDef$spec$sub = (_resourceDef$spec$sub2 = resourceDef.spec.subResources) === null || _resourceDef$spec$sub2 === void 0 ? void 0 : _resourceDef$spec$sub2.names) !== null && _resourceDef$spec$sub !== void 0 ? _resourceDef$spec$sub : [];
114
163
  const foundSubResources = (0, _pickBy.default)(resource, (_, key) => key.startsWith('x-') || knownSubResourcesNames.includes(key));
164
+ if (language) {
165
+ const langSubResourcesNames = (0, _utils.createLanguageSubresourceNames)(language);
166
+ langSubResourcesNames.forEach(name => {
167
+ if (!Object.keys(foundSubResources).includes(name) && name !== "languages") {
168
+ console.log(_chalk.default.yellow(`\n\'${name}\' subresource definition not found, hence create/update cannot be performed on \'${name}\' subresource.`));
169
+ }
170
+ });
171
+ Object.keys(foundSubResources).forEach(subRes => {
172
+ if (!langSubResourcesNames.includes(subRes)) {
173
+ // For create, only delete the language subresources that are not passed in the 'language' argument.
174
+ if (createAction) {
175
+ if (subRes.includes('languages')) {
176
+ delete foundSubResources[subRes];
177
+ }
178
+ }
179
+ // For update, delete all the subresources except the ones passed in the 'language' argument.
180
+ else {
181
+ delete foundSubResources[subRes];
182
+ }
183
+ }
184
+ });
185
+ }
115
186
  return (0, _isEmpty.default)(foundSubResources) ? null : Object.keys(foundSubResources).map(key => {
116
187
  return () => service.put(`${baseUrl}/${key}?fields=${key}`, {
117
188
  [key]: foundSubResources[key]
@@ -206,7 +277,8 @@ class ApiServerClient {
206
277
  scopeDef,
207
278
  scopeName,
208
279
  version = ApiServerVersions.v1alpha1,
209
- withSubResources = true
280
+ withSubResources = true,
281
+ language
210
282
  }) {
211
283
  log(`createResource, spec.kind = ${resourceDef.spec.kind}, name = ${resource.name}, withSubResources = ${withSubResources}`);
212
284
  const result = {
@@ -239,7 +311,9 @@ class ApiServerClient {
239
311
  resourceDef,
240
312
  scopeDef,
241
313
  scopeName,
242
- version
314
+ version,
315
+ createAction: true,
316
+ language
243
317
  });
244
318
  log(`createResource, pendingSubResources = ${pendingSubResources === null || pendingSubResources === void 0 ? void 0 : pendingSubResources.length}`);
245
319
  if (withSubResources) {
@@ -275,7 +349,8 @@ class ApiServerClient {
275
349
  scopeDef,
276
350
  scopeName,
277
351
  version = ApiServerVersions.v1alpha1,
278
- withSubResources = true
352
+ withSubResources = true,
353
+ language
279
354
  }) {
280
355
  log(`updateResource, spec.kind = ${resourceDef.spec.kind}, name = ${resource.name}`);
281
356
  const result = {
@@ -290,32 +365,53 @@ class ApiServerClient {
290
365
  account: this.account,
291
366
  team: this.team
292
367
  });
293
- const url = this.buildResourceBaseUrl({
294
- resourceDef,
295
- resourceName: resource.name,
296
- scopeDef,
297
- scopeName,
298
- version
299
- });
300
- const response = await service.put(url, (0, _utils.sanitizeMetadata)(resource));
301
- const pendingSubResources = await this.generateSubResourcesRequests({
302
- resource,
303
- resourceName: response.name,
304
- resourceDef,
305
- scopeDef,
306
- scopeName,
307
- version
308
- });
309
- if (withSubResources) {
310
- const {
311
- data: subResData,
312
- error: subResError
313
- } = await this.resolveSubResourcesRequests(response, pendingSubResources);
314
- result.data = subResData;
315
- result.error = subResError;
316
- } else {
317
- result.data = response;
368
+ let pendingSubResources;
369
+ if (language) {
370
+ pendingSubResources = await this.generateSubResourcesRequests({
371
+ resource,
372
+ resourceName: resource.name,
373
+ resourceDef,
374
+ scopeDef,
375
+ scopeName,
376
+ version,
377
+ createAction: false,
378
+ language
379
+ });
380
+ result.data = (0, _utils.buildGenericResource)({
381
+ resourceName: resource.name,
382
+ resourceDef: resourceDef,
383
+ scopeName: scopeName
384
+ });
318
385
  result.pending = pendingSubResources;
386
+ } else {
387
+ const url = this.buildResourceBaseUrl({
388
+ resourceDef,
389
+ resourceName: resource.name,
390
+ scopeDef,
391
+ scopeName,
392
+ version
393
+ });
394
+ const response = await service.put(url, (0, _utils.sanitizeMetadata)(resource));
395
+ pendingSubResources = await this.generateSubResourcesRequests({
396
+ resource,
397
+ resourceName: response.name,
398
+ resourceDef,
399
+ scopeDef,
400
+ scopeName,
401
+ createAction: false,
402
+ version
403
+ });
404
+ if (withSubResources) {
405
+ const {
406
+ data: subResData,
407
+ error: subResError
408
+ } = await this.resolveSubResourcesRequests(response, pendingSubResources);
409
+ result.data = subResData;
410
+ result.error = subResError;
411
+ } else {
412
+ result.data = response;
413
+ result.pending = pendingSubResources;
414
+ }
319
415
  }
320
416
  } catch (e) {
321
417
  log('updateResource, error', e);
@@ -476,7 +572,8 @@ class ApiServerClient {
476
572
  version = ApiServerVersions.v1alpha1,
477
573
  query,
478
574
  progressListener,
479
- expand
575
+ expand,
576
+ langDef
480
577
  }) {
481
578
  log(`getResourcesList, spec.kind = ${resourceDef.spec.kind}`);
482
579
  const result = {
@@ -495,7 +592,8 @@ class ApiServerClient {
495
592
  scopeDef,
496
593
  scopeName,
497
594
  version,
498
- expand
595
+ expand,
596
+ langDef
499
597
  });
500
598
  const response = await service.getWithPagination(url, query, 50, {}, progressListener);
501
599
  result.data = response;
@@ -526,7 +624,8 @@ class ApiServerClient {
526
624
  scopeDef,
527
625
  scopeName,
528
626
  version = ApiServerVersions.v1alpha1,
529
- expand
627
+ expand,
628
+ langDef
530
629
  }) {
531
630
  log(`getResourceByName, spec.kind = ${resourceDef.spec.kind}, name = ${resourceName}`);
532
631
  const result = {
@@ -546,7 +645,8 @@ class ApiServerClient {
546
645
  scopeDef,
547
646
  scopeName,
548
647
  version,
549
- expand
648
+ expand,
649
+ langDef
550
650
  });
551
651
  const response = await service.get(url);
552
652
  result.data = response;
@@ -717,7 +817,7 @@ class ApiServerClient {
717
817
  * sorting of the array of resources with "compareResourcesByKindAsc".
718
818
  * @param resources array of resources to create
719
819
  */
720
- async bulkCreateOrUpdate(resources, sortedDefsMap, version) {
820
+ async bulkCreateOrUpdate(resources, sortedDefsMap, language, version) {
721
821
  log(`bulk create or update`);
722
822
  // sort() is modifying the existing array so cloning it before use.
723
823
  const sortedDefsArray = Array.from(sortedDefsMap.values());
@@ -781,7 +881,8 @@ class ApiServerClient {
781
881
  scopeDef,
782
882
  scopeName,
783
883
  version,
784
- withSubResources: false
884
+ withSubResources: false,
885
+ language
785
886
  });
786
887
  if (res.data && !res.error) {
787
888
  // note: bulk operation requires creation of sub-resources after all main resources created
@@ -815,7 +916,8 @@ class ApiServerClient {
815
916
  scopeDef,
816
917
  scopeName,
817
918
  version,
818
- withSubResources: false
919
+ withSubResources: false,
920
+ language
819
921
  });
820
922
  if (res.data && !res.error) {
821
923
  if (!!res.pending) {
@@ -178,7 +178,7 @@ class Renderer {
178
178
  bulkResult.updated.success.forEach(r => this.success(`${this.resourceAndScopeKinds(r)} ${updateSuccessMsg}`));
179
179
  }
180
180
  }
181
- renderGetResults(bulkResultsArray, successMsg) {
181
+ renderGetResults(bulkResultsArray, successMsg, langDef) {
182
182
  // sort all results by success / error
183
183
  // IMPORTANT: mind the response.data! non-null assertion later on, should be covered by this loop
184
184
  const sortedResults = bulkResultsArray.reduce((a, c) => {
@@ -209,6 +209,9 @@ class Renderer {
209
209
  return a;
210
210
  }, []);
211
211
  }
212
+ if (langDef) {
213
+ dataToRender = this.formatLanguageDefinitionGetResults(dataToRender);
214
+ }
212
215
  (0, _resultsRenderers.renderResponse)(this._console, dataToRender, this.output);
213
216
  } else {
214
217
  // stop spinner and render a table for each successful request
@@ -232,6 +235,32 @@ class Renderer {
232
235
  if (!sortedResults.success.length) sortedResults.error.forEach(v => v.response.error && this.error(`Error: ${v.response.error[0].detail || v.response.error[0].title}`));
233
236
  }
234
237
 
238
+ /**
239
+ * Render any kind of error
240
+ * @param error error or ApiServer error to render
241
+ * @param prefixMsg a string to put before the error details (works only for api-server / known errors)
242
+ * @param ignoreOutputParam if provided as true will ignore the output param and always render
243
+ * the error message as set of strings. Currently used in bulk result renderers in case of any errors.
244
+ */
245
+ formatLanguageDefinitionGetResults(data) {
246
+ let dataArr = [];
247
+ if (!Array.isArray(data)) {
248
+ dataArr.push(data);
249
+ } else {
250
+ dataArr = data;
251
+ }
252
+ dataArr.forEach(data => {
253
+ var _data$metadata, _data$metadata2, _data$metadata3, _data$metadata4, _data$metadata5, _data$metadata5$scope, _data$languages;
254
+ data === null || data === void 0 ? true : (_data$metadata = data.metadata) === null || _data$metadata === void 0 ? true : delete _data$metadata.audit;
255
+ data === null || data === void 0 ? true : (_data$metadata2 = data.metadata) === null || _data$metadata2 === void 0 ? true : delete _data$metadata2.acl;
256
+ data === null || data === void 0 ? true : (_data$metadata3 = data.metadata) === null || _data$metadata3 === void 0 ? true : delete _data$metadata3.accessRights;
257
+ data === null || data === void 0 ? true : (_data$metadata4 = data.metadata) === null || _data$metadata4 === void 0 ? true : delete _data$metadata4.references;
258
+ data === null || data === void 0 ? true : (_data$metadata5 = data.metadata) === null || _data$metadata5 === void 0 ? true : (_data$metadata5$scope = _data$metadata5.scope) === null || _data$metadata5$scope === void 0 ? true : delete _data$metadata5$scope.title;
259
+ data === null || data === void 0 ? true : (_data$languages = data.languages) === null || _data$languages === void 0 ? true : delete _data$languages.metadata;
260
+ });
261
+ return dataArr;
262
+ }
263
+
235
264
  /**
236
265
  * Render any kind of error
237
266
  * @param error error or ApiServer error to render
@@ -5,7 +5,8 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.FormatString = FormatString;
7
7
  exports.KeyValueMapToNameValueArray = KeyValueMapToNameValueArray;
8
- exports.parseScopeParam = exports.loadAndVerifySpecs = exports.loadAndVerifyApigeeXCredentialFile = exports.isWindows = exports.isValidJson = exports.isApiServerErrorType = exports.isApiServerErrorResponseType = exports.hbsCompare = exports.getConfig = exports.configFile = exports.compareResourcesByKindDesc = exports.compareResourcesByKindAsc = exports.buildTemplate = exports.buildGenericResource = void 0;
8
+ exports.ValueFromKey = ValueFromKey;
9
+ exports.parseScopeParam = exports.loadAndVerifySpecs = exports.loadAndVerifyApigeeXCredentialFile = exports.isWindows = exports.isValidJson = exports.isApiServerErrorType = exports.isApiServerErrorResponseType = exports.hbsCompare = exports.getConfig = exports.createLanguageSubresourceNames = exports.configFile = exports.compareResourcesByKindDesc = exports.compareResourcesByKindAsc = exports.buildTemplate = exports.buildGenericResource = void 0;
9
10
  exports.sanitizeMetadata = sanitizeMetadata;
10
11
  exports.writeToFile = exports.writeTemplates = exports.verifyScopeParam = exports.verifyFile = exports.transformSimpleFilters = void 0;
11
12
  var _fsExtra = require("fs-extra");
@@ -15,6 +16,7 @@ var _os = require("os");
15
16
  var _path = require("path");
16
17
  var _CompositeError = require("./CompositeError");
17
18
  var _types = require("./types");
19
+ var _chalk = _interopRequireDefault(require("chalk"));
18
20
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
19
21
  const isWindows = exports.isWindows = /^win/.test(process.platform);
20
22
  const configFile = exports.configFile = (0, _path.join)((0, _os.homedir)(), '.axway', 'central.json');
@@ -389,4 +391,27 @@ function KeyValueMapToNameValueArray(m) {
389
391
  return undefined;
390
392
  }
391
393
  return array;
394
+ }
395
+ const createLanguageSubresourceNames = langCode => {
396
+ const langCodeArr = langCode.split(',');
397
+ let langSubresourceNamesArr = ['languages'];
398
+ let languageTypesArr = [];
399
+ Object.keys(_types.LanguageTypes).forEach(key => languageTypesArr.push(ValueFromKey(_types.LanguageTypes, key)));
400
+ langCodeArr.forEach(langCode => {
401
+ if (langCode.trim() != '') {
402
+ if (!languageTypesArr.includes(langCode)) {
403
+ console.log(_chalk.default.yellow(`\n\'${langCode}\' language code is not supported, hence create/update cannot be performed on \'languages-${langCode}\. Allowed language codes: ${_types.LanguageTypes.French} | ${_types.LanguageTypes.German} | ${_types.LanguageTypes.US} | ${_types.LanguageTypes.Portugese}.'`));
404
+ } else {
405
+ langSubresourceNamesArr.push(`languages-${langCode.trim()}`);
406
+ }
407
+ }
408
+ });
409
+ return langSubresourceNamesArr;
410
+ };
411
+ exports.createLanguageSubresourceNames = createLanguageSubresourceNames;
412
+ function ValueFromKey(stringEnum, key) {
413
+ for (const k of Object.values(stringEnum)) {
414
+ if (k === stringEnum[key]) return k;
415
+ }
416
+ return undefined;
392
417
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@axway/axway-central-cli",
3
- "version": "3.2.0",
3
+ "version": "3.4.0-rc.0",
4
4
  "description": "Manage APIs, services and publish to the Amplify Marketplace",
5
5
  "homepage": "https://platform.axway.com",
6
6
  "author": {