zcatalyst-cli
Version:
Command Line Tool for CATALYST
82 lines (81 loc) • 3.89 kB
JavaScript
'use strict';
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const ansi_colors_1 = require("ansi-colors");
const apig_utils_1 = require("../../apig-utils");
const endpoints_1 = require("../../endpoints");
const error_1 = __importDefault(require("../../error"));
const prompt_1 = __importDefault(require("../../prompt"));
const runtime_store_1 = __importDefault(require("../../runtime-store"));
const config_1 = require("../../util_modules/config");
const fs_1 = require("../../util_modules/fs");
const sync_1 = require("../../util_modules/fs/lib/sync");
const logger_1 = require("../../util_modules/logger");
const project_1 = require("../../util_modules/project");
exports.default = () => __awaiter(void 0, void 0, void 0, function* () {
const apigName = config_1.apigConfig.rules();
const apigDirPath = (0, project_1.resolveProjectPath)(apigName);
if ((0, sync_1.isPathOutside)(runtime_store_1.default.get('project.root'), apigDirPath)) {
(0, logger_1.info)('Skipping APIG pull since rules file is outside root dir : ' +
runtime_store_1.default.get('project.root'));
return;
}
const apigAPIs = yield (0, endpoints_1.apigAPI)();
const apigStatus = (yield apigAPIs.getAPIGStatus());
if (!apigStatus.status) {
(0, logger_1.info)();
const consent = yield prompt_1.default.ask(prompt_1.default.question('enable', 'The APIG is disable in catalyst console, Do you want to enable it and pull the APIG rules now ?', {
type: 'confirm',
defaultAns: false
}));
if (!consent.enable) {
(0, logger_1.info)('Skipping APIG pull. Since the APIG is disabled in catalyst console.');
return;
}
yield apigAPIs.updateAPIGStatus(true);
}
const fileExists = yield fs_1.ASYNC.fileExists(apigDirPath);
const overwriteAns = fileExists
? yield prompt_1.default.ask(prompt_1.default.question('overwrite', 'File ' + (0, ansi_colors_1.underline)(apigDirPath) + ' already exists. Overwrite ?', {
type: 'confirm',
defaultAns: false
}))
: { overwrite: true };
if (!overwriteAns.overwrite) {
(0, logger_1.info)('Skipping APIG pull');
return;
}
yield fs_1.ASYNC.deleteFile(apigDirPath).catch();
const rulesArr = (yield apigAPIs.getAllRules());
if (!rulesArr || rulesArr.length === 0) {
(0, logger_1.info)('No rules found in remote console');
return;
}
try {
const fileContent = JSON.stringify(rulesArr, null, 2) + '\n';
yield fs_1.ASYNC.writeFile(apigDirPath, fileContent);
yield apig_utils_1.apigUtils.validate();
}
catch (err) {
runtime_store_1.default.set('payload.apig.status', 1);
if (err instanceof error_1.default) {
throw new error_1.default(err.message, {
exit: err.exit,
errorId: err.errorId
});
}
throw err;
}
runtime_store_1.default.set('payload.apig.source', apigDirPath);
});