UNPKG

@axway/axway-central-cli

Version:

Manage APIs, services and publish to the Amplify Marketplace

99 lines (98 loc) 3.54 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.productize = void 0; var _snooplogg = _interopRequireDefault(require("snooplogg")); var _amplifyCliUtils = require("@axway/amplify-cli-utils"); var _ApiServerClient = require("../../common/ApiServerClient"); var _DefinitionsManager = require("../../common/DefinitionsManager"); var _Renderer = _interopRequireDefault(require("../../common/Renderer")); var _types = require("../../common/types"); var _productizationHelper = require("../productize/helpers/productizationHelper"); var _utils = require("../../common/utils"); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } const { log } = (0, _snooplogg.default)('central: productize'); const action = async ({ argv, console }) => { var _account; const { baseUrl, file, region, cache, transferOwnership } = argv; let commandIsSuccessful = true; log(`verifying args`); if (!file) throw new Error('To create resources from a file, please provide -f, --file [path] option'); log(`verifying file: ${file}`); (0, _utils.verifyFile)(file); const render = new _Renderer.default(console).startSpin('Productizing API Service(s)'); const config = (0, _amplifyCliUtils.loadConfig)(); const environment = !baseUrl || baseUrl === _types.ProdBaseUrls.US || baseUrl === _types.ProdBaseUrls.EU || baseUrl === _types.ProdBaseUrls.AP ? config.get('env') : 'staging'; const { sdk } = (0, _amplifyCliUtils.initSDK)({ env: environment }, config); const list = await sdk.auth.list({ validate: true }); let account = undefined; if (list.length === 1) { account = list[0]; } else if (list.length > 1) { // try to find the default account account = list.find(a => a.name === config.get('auth.defaultAccount')) || list.find(a => a.default) || list[0]; } const client = new _ApiServerClient.ApiServerClient({ baseUrl, account: (_account = account) === null || _account === void 0 ? void 0 : _account.name, region, useCache: cache, forceGetAuthInfo: true }); const defsManager = new _DefinitionsManager.DefinitionsManager(client); let results = new Map(); log(`executing api calls`); try { await defsManager.init(); log(`loading and verifying specs`); const allowedKind = new Set().add(_types.Kind.APIService); const { docs } = await (0, _utils.loadAndVerifySpecs)(file, allowedKind, true); render.startSpin('Productizing API Service(s)\n'); const sortedKindsMap = defsManager.getSortedKindsMap(); const helper = new _productizationHelper.ProductizationHelper(client); results = await helper.bulkProductizeAPIServices(docs, sortedKindsMap, transferOwnership); render.stopSpin(); render.productizationResult(results); results.forEach(value => { if (value.error.length > 0) commandIsSuccessful = false; }); } catch (e) { log('command error', e); render.anyError(e); } finally { log(`command finished, success = ${commandIsSuccessful}`); !commandIsSuccessful && process.exit(1); } }; const productize = exports.productize = { action, desc: 'Productize one or more API Services from a file', options: { ..._types.commonCmdArgsDescription, '-f, --file [path]': { desc: `Filename to use to create the resource`, type: 'string' }, '--transferOwnership': `Transfers the ownership(if exisiting) of API Service(s) to corresponding Asset(s) and Product(s)` } };