specmatic
Version:
Node wrapper for Specmatic
58 lines (57 loc) • 10.6 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.callCore = void 0;
var _path = _interopRequireDefault(require("path"));
var _config = require("../config");
var _logger = _interopRequireDefault(require("../common/logger"));
var _child_process = require("child_process");
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
var callCore = exports.callCore = function callCore(args, done, onOutput) {
var rootPath = _path["default"].resolve(__dirname, '..', '..');
var specmaticJarPath = _path["default"].resolve(rootPath, _config.specmaticCoreJarName);
return callJar(specmaticJarPath, args, done, onOutput);
};
function callJar(jarPath, args, done, onOutput) {
var _javaProcess$stdout, _javaProcess$stderr;
var argsList = [];
if (process.env['endpointsAPI']) {
argsList.push("-DendpointsAPI=\"".concat(process.env['endpointsAPI'], "\""));
}
argsList.push.apply(argsList, ['-jar', jarPath]);
argsList.push.apply(argsList, _toConsumableArray(args.map(function (arg) {
return String(arg);
})));
var prettyPrintedCLIArgs = ["java"].concat(argsList).map(function (arg) {
return JSON.stringify(arg);
}).join(' ');
_logger["default"].info("CLI: Running command: ".concat(prettyPrintedCLIArgs));
var javaProcess = (0, _child_process.spawn)('java', argsList, {
stdio: 'pipe',
stderr: 'pipe',
shell: false,
env: process.env
});
(_javaProcess$stdout = javaProcess.stdout) === null || _javaProcess$stdout === void 0 || _javaProcess$stdout.on('data', function (data) {
onOutput("".concat(data), false);
});
(_javaProcess$stderr = javaProcess.stderr) === null || _javaProcess$stderr === void 0 || _javaProcess$stderr.on('data', function (data) {
onOutput("".concat(data), true);
});
javaProcess.on('close', function (code) {
if (code) {
done(new Error('Command exited with non zero code: ' + code));
} else {
done(null);
}
});
return javaProcess;
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcGF0aCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2NvbmZpZyIsIl9sb2dnZXIiLCJfY2hpbGRfcHJvY2VzcyIsImUiLCJfX2VzTW9kdWxlIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiciIsIl9hcnJheVdpdGhvdXRIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXkiLCJfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkiLCJfbm9uSXRlcmFibGVTcHJlYWQiLCJUeXBlRXJyb3IiLCJhIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJ0IiwidG9TdHJpbmciLCJjYWxsIiwic2xpY2UiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJBcnJheSIsImZyb20iLCJ0ZXN0IiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJpc0FycmF5IiwibGVuZ3RoIiwibiIsImNhbGxDb3JlIiwiZXhwb3J0cyIsImFyZ3MiLCJkb25lIiwib25PdXRwdXQiLCJyb290UGF0aCIsInBhdGgiLCJyZXNvbHZlIiwiX19kaXJuYW1lIiwic3BlY21hdGljSmFyUGF0aCIsInNwZWNtYXRpY0NvcmVKYXJOYW1lIiwiY2FsbEphciIsImphclBhdGgiLCJfamF2YVByb2Nlc3Mkc3Rkb3V0IiwiX2phdmFQcm9jZXNzJHN0ZGVyciIsImFyZ3NMaXN0IiwicHJvY2VzcyIsImVudiIsInB1c2giLCJjb25jYXQiLCJhcHBseSIsIm1hcCIsImFyZyIsIlN0cmluZyIsInByZXR0eVByaW50ZWRDTElBcmdzIiwiSlNPTiIsInN0cmluZ2lmeSIsImpvaW4iLCJsb2dnZXIiLCJpbmZvIiwiamF2YVByb2Nlc3MiLCJzcGF3biIsInN0ZGlvIiwic3RkZXJyIiwic2hlbGwiLCJzdGRvdXQiLCJvbiIsImRhdGEiLCJjb2RlIiwiRXJyb3IiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbW9uL3J1bm5lci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZXhlY1NoIGZyb20gJ2V4ZWMtc2gnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBzcGVjbWF0aWNDb3JlSmFyTmFtZSB9IGZyb20gJy4uL2NvbmZpZyc7XG5pbXBvcnQgbG9nZ2VyIGZyb20gJy4uL2NvbW1vbi9sb2dnZXInO1xuaW1wb3J0IHsgQ2hpbGRQcm9jZXNzLCBleGVjLCBzcGF3biwgU3Bhd25PcHRpb25zIH0gZnJvbSAnY2hpbGRfcHJvY2Vzcyc7XG5cbmNvbnN0IGNhbGxDb3JlID0gKGFyZ3M6IChzdHJpbmcgfCBudW1iZXIpW10sIGRvbmU6IChlcnJvcjogYW55KSA9PiB2b2lkLCBvbk91dHB1dDogKG1lc3NhZ2U6IHN0cmluZywgZXJyb3I6IGJvb2xlYW4pID0+IHZvaWQpOiBDaGlsZFByb2Nlc3MgPT4ge1xuICAgIGNvbnN0IHJvb3RQYXRoID0gcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJy4uJywgJy4uJyk7XG4gICAgY29uc3Qgc3BlY21hdGljSmFyUGF0aCA9IHBhdGgucmVzb2x2ZShyb290UGF0aCwgc3BlY21hdGljQ29yZUphck5hbWUpO1xuICAgIHJldHVybiBjYWxsSmFyKHNwZWNtYXRpY0phclBhdGgsIGFyZ3MsIGRvbmUsIG9uT3V0cHV0KTtcbn07XG5cbmZ1bmN0aW9uIGNhbGxKYXIoamFyUGF0aDogc3RyaW5nLCBhcmdzOiAoc3RyaW5nIHwgbnVtYmVyKVtdLCBkb25lOiAoZXJyb3I6IGFueSkgPT4gdm9pZCwgb25PdXRwdXQ6IChtZXNzYWdlOiBzdHJpbmcsIGVycm9yOiBib29sZWFuKSA9PiB2b2lkKSB7XG4gICAgY29uc3QgYXJnc0xpc3Q6IHN0cmluZ1tdID0gW107XG4gICAgaWYgKHByb2Nlc3MuZW52WydlbmRwb2ludHNBUEknXSkge1xuICAgICAgICBhcmdzTGlzdC5wdXNoKGAtRGVuZHBvaW50c0FQST1cIiR7cHJvY2Vzcy5lbnZbJ2VuZHBvaW50c0FQSSddfVwiYCk7XG4gICAgfVxuICAgIGFyZ3NMaXN0LnB1c2goLi4uWyctamFyJywgamFyUGF0aF0pO1xuICAgIGFyZ3NMaXN0LnB1c2goLi4uYXJncy5tYXAoYXJnID0+IFN0cmluZyhhcmcpKSk7XG4gICAgY29uc3QgcHJldHR5UHJpbnRlZENMSUFyZ3MgPSBbYGphdmFgLCAuLi5hcmdzTGlzdF0ubWFwKGFyZyA9PiBKU09OLnN0cmluZ2lmeShhcmcpKS5qb2luKCcgJyk7XG5cbiAgICBsb2dnZXIuaW5mbyhgQ0xJOiBSdW5uaW5nIGNvbW1hbmQ6ICR7cHJldHR5UHJpbnRlZENMSUFyZ3N9YCk7XG4gICAgY29uc3QgamF2YVByb2Nlc3M6IENoaWxkUHJvY2VzcyA9IHNwYXduKCdqYXZhJywgYXJnc0xpc3QsIHsgc3RkaW86ICdwaXBlJywgc3RkZXJyOiAncGlwZScsIHNoZWxsOiBmYWxzZSwgZW52OiBwcm9jZXNzLmVudiB9IGFzIFNwYXduT3B0aW9ucyk7XG4gICAgamF2YVByb2Nlc3Muc3Rkb3V0Py5vbignZGF0YScsIGZ1bmN0aW9uIChkYXRhOiBTdHJpbmcpIHtcbiAgICAgICAgb25PdXRwdXQoYCR7ZGF0YX1gLCBmYWxzZSk7XG4gICAgfSk7XG4gICAgamF2YVByb2Nlc3Muc3RkZXJyPy5vbignZGF0YScsIGZ1bmN0aW9uIChkYXRhOiBTdHJpbmcpIHtcbiAgICAgICAgb25PdXRwdXQoYCR7ZGF0YX1gLCB0cnVlKTtcbiAgICB9KTtcbiAgICBqYXZhUHJvY2Vzcy5vbignY2xvc2UnLCBmdW5jdGlvbiAoY29kZTpudW1iZXIpIHtcbiAgICAgICAgaWYgKGNvZGUpIHtcbiAgICAgICAgICAgIGRvbmUobmV3IEVycm9yKCdDb21tYW5kIGV4aXRlZCB3aXRoIG5vbiB6ZXJvIGNvZGU6ICcgKyBjb2RlKSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGRvbmUobnVsbCk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gamF2YVByb2Nlc3M7XG59XG5cbmV4cG9ydCB7IGNhbGxDb3JlIH07XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLElBQUFBLEtBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLE9B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QUFBdEMsa0JBQUEsQ0FBU3lCLElBQUksQ0FBQ21CLEdBQUcsQ0FBQyxVQUFBQyxHQUFHO0lBQUEsT0FBSUMsTUFBTSxDQUFDRCxHQUFHLENBQUM7RUFBQSxFQUFDLEVBQUM7RUFDOUMsSUFBTUUsb0JBQW9CLEdBQUcsU0FBQUwsTUFBQSxDQUFZSixRQUFRLEVBQUVNLEdBQUcsQ0FBQyxVQUFBQyxHQUFHO0lBQUEsT0FBSUcsSUFBSSxDQUFDQyxTQUFTLENBQUNKLEdBQUcsQ0FBQztFQUFBLEVBQUMsQ0FBQ0ssSUFBSSxDQUFDLEdBQUcsQ0FBQztFQUU1RkMsa0JBQU0sQ0FBQ0MsSUFBSSwwQkFBQVYsTUFBQSxDQUEwQkssb0JBQW9CLENBQUUsQ0FBQztFQUM1RCxJQUFNTSxXQUF5QixHQUFHLElBQUFDLG9CQUFLLEVBQUMsTUFBTSxFQUFFaEIsUUFBUSxFQUFFO0lBQUVpQixLQUFLLEVBQUUsTUFBTTtJQUFFQyxNQUFNLEVBQUUsTUFBTTtJQUFFQyxLQUFLLEVBQUUsS0FBSztJQUFFakIsR0FBRyxFQUFFRCxPQUFPLENBQUNDO0VBQUksQ0FBaUIsQ0FBQztFQUM1SSxDQUFBSixtQkFBQSxHQUFBaUIsV0FBVyxDQUFDSyxNQUFNLGNBQUF0QixtQkFBQSxlQUFsQkEsbUJBQUEsQ0FBb0J1QixFQUFFLENBQUMsTUFBTSxFQUFFLFVBQVVDLElBQVksRUFBRTtJQUNuRGpDLFFBQVEsSUFBQWUsTUFBQSxDQUFJa0IsSUFBSSxHQUFJLEtBQUssQ0FBQztFQUM5QixDQUFDLENBQUM7RUFDRixDQUFBdkIsbUJBQUEsR0FBQWdCLFdBQVcsQ0FBQ0csTUFBTSxjQUFBbkIsbUJBQUEsZUFBbEJBLG1CQUFBLENBQW9Cc0IsRUFBRSxDQUFDLE1BQU0sRUFBRSxVQUFVQyxJQUFZLEVBQUU7SUFDbkRqQyxRQUFRLElBQUFlLE1BQUEsQ0FBSWtCLElBQUksR0FBSSxJQUFJLENBQUM7RUFDN0IsQ0FBQyxDQUFDO0VBQ0ZQLFdBQVcsQ0FBQ00sRUFBRSxDQUFDLE9BQU8sRUFBRSxVQUFVRSxJQUFXLEVBQUU7SUFDM0MsSUFBSUEsSUFBSSxFQUFFO01BQ05uQyxJQUFJLENBQUMsSUFBSW9DLEtBQUssQ0FBQyxxQ0FBcUMsR0FBR0QsSUFBSSxDQUFDLENBQUM7SUFDakUsQ0FBQyxNQUFNO01BQ0huQyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ2Q7RUFDSixDQUFDLENBQUM7RUFDRixPQUFPMkIsV0FBVztBQUN0QiIsImlnbm9yZUxpc3QiOltdfQ==