UNPKG

roar-sdk

Version:

Node.js SDK for developing Roar inspectors

160 lines (120 loc) 4.21 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _stringify = require('babel-runtime/core-js/json/stringify'); var _stringify2 = _interopRequireDefault(_stringify); exports.generateHash = generateHash; exports.formatError = formatError; exports.formatErrorToJSON = formatErrorToJSON; exports.execScript = execScript; exports.parsePowershellOutput = parsePowershellOutput; var _child_process = require('child_process'); var _child_process2 = _interopRequireDefault(_child_process); var _crypto = require('crypto'); var _crypto2 = _interopRequireDefault(_crypto); var _errorFormatter = require('error-formatter'); var _errorFormatter2 = _interopRequireDefault(_errorFormatter); var _os = require('os'); var _os2 = _interopRequireDefault(_os); var _moment = require('moment'); var _moment2 = _interopRequireDefault(_moment); var _bluebird = require('bluebird'); var _bluebird2 = _interopRequireDefault(_bluebird); var _configure = require('./configure'); var _configure2 = _interopRequireDefault(_configure); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function isNumeric(num) { return !isNaN(num); } // --- Modules // --- Libraries function format(err, data) { if (data) { err.data = data; } return err; } function generateHash(obj) { return _crypto2.default.createHash('sha256').update((0, _stringify2.default)(obj)).digest('hex'); } function formatError(err, data) { return (0, _errorFormatter2.default)(format(err, data)); } function formatErrorToJSON(err, data) { return _errorFormatter2.default.json(format(err, data)); } function execScript(cmd, args) { var cli = _child_process2.default.spawn(cmd, args); console.log('changing pid to', cli.pid); global.sdkEventEmitter.emit('update-pid', cli.pid); console.log('ready to spawn', cmd, args); return new _bluebird2.default(function (resolve, reject) { var stdout = ''; var stderr = ''; cli.stdout.on('data', function (data) { stdout += data; }); cli.stderr.on('data', function (data) { stderr += data; }); cli.on('exit', function (code) { //console.log('command is done', stderr, stdout); if (stderr) { console.log('command got stderr', stderr); //reject(stderr); // Log it? } global.sdkEventEmitter.emit('update-pid', process.pid); resolve(stdout.split(/\r?\n/)); }); }); } function parsePowershellOutput(lines) { var i = 0; var objects = {}; var location = ''; var ref = objects; while (i < lines.length) { var line = lines[i]; if (line.indexOf('++START') !== -1) { var breaks = line.split('::'); location += '/' + breaks[1]; if (isNumeric(breaks[1])) { ref[+breaks[1]] = line.indexOf('[]') !== -1 ? [] : {}; ref = ref[+breaks[1]]; } else { ref[breaks[1]] = line.indexOf('[]') !== -1 ? [] : {}; ref = ref[breaks[1]]; } } else if (line.indexOf('++STOP') !== -1) { var path = location.split('/'); ref = objects; path.slice(1, path.length - 1).forEach(function (p) { if (isNumeric(p)) { ref = ref[+p]; } else { ref = ref[p]; } }); location = path.slice(0, path.length - 1).join('/'); } else if (location !== '' && line.indexOf(':') !== -1) { var pair = line.split(':'); var name = pair[0].trim(); var value = pair[1].replace(/\r?\n/g, '').trim(); if (value === 'True' || value === 'False') { value = value === 'True'; } else if (!(typeof value === 'string' && value === '') && isNumeric(value)) { value = +value; } else if (typeof value === 'string' && value.match(/\d{1,2}\/\d{1,2}\/\d{4} \d{1}:\d{2}:\d{2} (AM|PM)/) !== null) { value = (0, _moment2.default)(value, 'MM/DD/YYYY hh:mm:ss A').toDate(); } else if (typeof value === 'string' && value.match(/\d{1,2}\/\d{1,2}\/\d{4} \d{1}/) !== null) { value = (0, _moment2.default)(value, 'MM/DD/YYYY h').toDate(); } ref[name] = value; } i++; } return objects; } //# sourceMappingURL=utils.js.map