@axway/axway-central-cli
Version:
Manage APIs, services and publish to the Amplify Marketplace
112 lines (110 loc) • 4.42 kB
JavaScript
;
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'
}
}
};