UNPKG

@axway/axway-central-cli

Version:

Manage APIs, services and publish to the Amplify Marketplace

112 lines (110 loc) 4.42 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.apply = void 0; var _chalk = _interopRequireDefault(require("chalk")); var _snooplogg = _interopRequireDefault(require("snooplogg")); var _ApiServerClient = require("../../common/ApiServerClient"); var _basicPrompts = require("../../common/basicPrompts"); var _DefinitionsManager = require("../../common/DefinitionsManager"); var _Renderer = _interopRequireDefault(require("../../common/Renderer")); var _types = require("../../common/types"); var _utils = require("../../common/utils"); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } const { log } = (0, _snooplogg.default)('engage: create'); const action = async ({ argv, console }) => { const { baseUrl, account, file, output, region, cache, yes, language, subresource } = argv; let isCmdError = false; // need to verify args here since if "-f" is required // cli-kit is also enforcing it on sub-commands log(`verifying args`); if (!file) throw new Error('File name is required, please provide -f, --file [path] option'); log(`verifying file: ${file}`); (0, _utils.verifyFile)(file); let results = []; const render = new _Renderer.default(console, output).startSpin('Creating or updating resource(s)'); const client = new _ApiServerClient.ApiServerClient({ baseUrl, region, useCache: cache, account }); const defsManager = new _DefinitionsManager.DefinitionsManager(client); log(`executing api calls`); try { await defsManager.init(); log(`loading and verifying specs`); const { docs, isMissingName } = await (0, _utils.loadAndVerifySpecs)(file, defsManager.getAllKindsList()); if (!yes && isMissingName) { render.stopSpin(); if ((await (0, _basicPrompts.askList)({ msg: `As your file contains resources with missing logical names, their logical names will be autogenerated. \nRun ${_chalk.default.cyan('axway engage apply -f <filepath> -o [yaml|json] -y > <output filepath>')} to capture the resource(s) with the autogenerated logical name(s) so you can use them again. \nNOTE: To suppress this prompt in the future, please use the '-y' flag. \nWould you like to continue *without* capturing the resource names in a new file?`, choices: _types.YesNoChoices, default: _types.YesNo.Yes })) === _types.YesNo.No) process.exit(1); render.startSpin('Creating or updating resource(s)'); } const sortedKindsMap = defsManager.getSortedKindsMap(); results = await client.bulkCreateOrUpdate(docs, sortedKindsMap, language, subresource); render.bulkCreateOrUpdateResult(results); isCmdError = results.some(nextResult => { var _nextResult$error$len, _nextResult$error; return (_nextResult$error$len = (_nextResult$error = nextResult.error) === null || _nextResult$error === void 0 ? void 0 : _nextResult$error.length) !== null && _nextResult$error$len !== void 0 ? _nextResult$error$len : 0 > 0; }); } catch (e) { log('command error', e); isCmdError = true; if (results.some(nextResult => nextResult.data)) { // Render the results that have completed. render.bulkCreateOrUpdateResult(results); } render.anyError(e); } finally { log(`command finished, exit with error = ${isCmdError}`); render.stopSpin(); if (isCmdError) process.exit(1); } }; const apply = exports.apply = { action, desc: 'Update resources from a file', options: { ..._types.commonCmdArgsDescription, '-o, --output [value]': { desc: `Additional output formats. One of: ${_types.OutputTypes.yaml} | ${_types.OutputTypes.json}`, type: 'string' }, '-f, --file [path]': { desc: `Filename to use to create or update the resources. One of: yaml | json`, type: 'string' }, '-y, --yes': 'Automatically reply "yes" to any command prompts.', '--language=[langCode]': { desc: `Language Codes. One of: Comma Separated values of ${_types.LanguageTypes.French} | ${_types.LanguageTypes.US} | ${_types.LanguageTypes.German} | ${_types.LanguageTypes.Portugese}`, type: 'string' }, '--subresource=[name]': { desc: 'Name of the 1 subresource to update. Will prevent main resource and all other subresources from being updated.', type: 'string' } } };