UNPKG

@axway/axway-central-cli

Version:

Manage APIs, services and publish to the Amplify Marketplace

101 lines (100 loc) 3.65 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.environment = void 0; var _cliKit = require("cli-kit"); var _snooplogg = _interopRequireDefault(require("snooplogg")); var _dataService = require("../../common/dataService"); var _Renderer = _interopRequireDefault(require("../../common/Renderer")); var _resultsRenderers = require("../../common/resultsRenderers"); var _TmpFile = _interopRequireDefault(require("../../common/TmpFile")); var _types = require("../../common/types"); var _utils = require("../../common/utils"); var _ApiServerClient = require("../../common/ApiServerClient"); var _DefinitionsManager = require("../../common/DefinitionsManager"); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } const { log } = (0, _snooplogg.default)('engage:edit:environment'); const action = async ({ argv, console }) => { const { baseUrl, account, name, output, region, cache } = argv; log(`editing ${name} env`); let file; let commandIsSuccessful = true; const render = new _Renderer.default(console, output).startSpin(`Fetching details of "environment/${name}".`); try { var _defsManager$findDefs, _defsManager$findDefs2; const client = new _ApiServerClient.ApiServerClient({ baseUrl, account, region, useCache: cache }); const defsManager = new _DefinitionsManager.DefinitionsManager(client); await defsManager.init(); const def = (_defsManager$findDefs = defsManager.findDefsByWord('env')) === null || _defsManager$findDefs === void 0 ? void 0 : (_defsManager$findDefs2 = _defsManager$findDefs.find(def => def)) === null || _defsManager$findDefs2 === void 0 ? void 0 : _defsManager$findDefs2.resource; const service = await (0, _dataService.dataService)({ baseUrl, account, region }); let response; let version = "v1alpha1"; if (def) { version = (0, _utils.getLatestServedAPIVersion)(def); } response = await service.get(`/management/${version}/environments/${name}`); file = new _TmpFile.default(response); // stop spinner or it will interfere stdio of editor render.stopSpin(); const { isUpdated } = await file.edit(); if (isUpdated) { // intentionally taking just first doc even if user will provide more in the same file while editing. const { docs } = await (0, _utils.loadAndVerifySpecs)(file.path, new Set([_types.Kind.Environment])); response = await service.put(`/management/${version}/environments/${name}`, docs[0]); render.success((0, _cliKit.chalk)`{greenBright "environment/${name}" has successfully been edited.}`); // render result if output flag has been provided output && (0, _resultsRenderers.renderResponse)(console, response, output); } else { log('no changes has been made to file'); render.error('Edit cancelled, no changes made.'); file.delete(); commandIsSuccessful = false; } } catch (e) { log('command error', e); file && console.log(`A copy of your changes has been stored to "${file.path}".`); render.anyError(e); commandIsSuccessful = false; } finally { log(`command finished, success = ${commandIsSuccessful}`); file && commandIsSuccessful && file.delete(); render.stopSpin(); !commandIsSuccessful && process.exit(1); } }; const environment = exports.environment = { aliases: ['env'], action, desc: 'Edit an environment with the specified name.', args: [{ name: 'name', desc: 'Name of the environment', required: true }] };