UNPKG

reactors-cli

Version:
64 lines (48 loc) 1.54 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = std; var _child_process = require('child_process'); var _events = require('events'); var _events2 = _interopRequireDefault(_events); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _toArray(arr) { return Array.isArray(arr) ? arr : Array.from(arr); } function std(cmd) { var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var emitter = new _events2.default(); var _cmd$split = cmd.split(/\s+/), _cmd$split2 = _toArray(_cmd$split), entry = _cmd$split2[0], bits = _cmd$split2.slice(1); var ps = (0, _child_process.spawn)(entry, bits, options); var out = []; var err = []; ps.on('error', function (error) { return emitter.emit('error', error); }).on('exit', function (status) { process.stdin.unpipe(ps.stdin); process.stdin.end(); if (status === 0) { emitter.emit('done', { err: err.join(''), out: out.join('') }); } else { emitter.emit('error', new Error('Got status ' + status)); } }); ps.stdout.on('data', function (data) { out.push(data.toString()); emitter.emit('message', { std: 'out', data: data.toString() }); }); ps.stderr.on('data', function (data) { err.push(data.toString()); emitter.emit('message', { std: 'err', data: data.toString() }); }); process.stdin.pipe(ps.stdin); return emitter; }