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