1 | "use strict";
|
2 |
|
3 | const cp = require('child_process');
|
4 | const once = require('../function/once');
|
5 |
|
6 |
|
7 | module.exports = function(cmd /*, options, chain*/) {
|
8 |
|
9 | var args = Array.from(arguments);
|
10 | var chain = once(args.pop());
|
11 | cmd = args.shift();
|
12 | var options = args.shift() || {};
|
13 |
|
14 | if(Array.isArray(options))
|
15 | options = { args : options};
|
16 |
|
17 | var ps = cp.spawn(cmd, options.args || [], options);
|
18 | var _stdout = "";
|
19 | var _stderr = "";
|
20 |
|
21 | ps.on('error', chain);
|
22 |
|
23 | ps.stdout.on('data', function(data) { _stdout += data; });
|
24 | ps.stderr.on('data', function(data) { _stderr += data; });
|
25 |
|
26 | ps.on('close', function(exit) {
|
27 | return chain(exit, _stdout, _stderr);
|
28 | });
|
29 |
|
30 | return ps;
|
31 | };
|
32 |
|