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