@axway/axway-central-cli 3.3.0 → 3.4.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/dist/commands/apply/index.js +8 -3
- package/dist/commands/get/index.js +20 -7
- package/dist/common/ApiServerClient.js +140 -38
- package/dist/common/Renderer.js +30 -1
- package/dist/common/utils.js +26 -1
- package/package.json +1 -1
|
@@ -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
|
|
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
|
-
|
|
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
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
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) {
|
package/dist/common/Renderer.js
CHANGED
|
@@ -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
|
package/dist/common/utils.js
CHANGED
|
@@ -5,7 +5,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.FormatString = FormatString;
|
|
7
7
|
exports.KeyValueMapToNameValueArray = KeyValueMapToNameValueArray;
|
|
8
|
-
exports.
|
|
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
|
}
|