50 lines
1.1 KiB
JavaScript
50 lines
1.1 KiB
JavaScript
|
/*!
|
||
|
* exec-series | MIT (c) Shinnosuke Watanabe
|
||
|
* https://github.com/shinnn/exec-series
|
||
|
*/
|
||
|
|
||
|
'use strict';
|
||
|
|
||
|
var exec = require('child_process').exec;
|
||
|
|
||
|
var eachSeries = require('async-each-series');
|
||
|
var objectAssign = require('object-assign');
|
||
|
|
||
|
var TEN_MEBIBYTE = 1024 * 1024 * 10;
|
||
|
|
||
|
module.exports = function execSeries(commands, options, cb) {
|
||
|
if (!Array.isArray(commands)) {
|
||
|
throw new TypeError(
|
||
|
commands +
|
||
|
' is not an array. First argument must be an array of strings.'
|
||
|
);
|
||
|
}
|
||
|
|
||
|
if (cb === undefined) {
|
||
|
if (typeof options === 'function') {
|
||
|
cb = options;
|
||
|
options = {};
|
||
|
}
|
||
|
} else if (typeof cb !== 'function') {
|
||
|
throw new TypeError(
|
||
|
cb +
|
||
|
' is not a function. Last argument must be a function.'
|
||
|
);
|
||
|
}
|
||
|
|
||
|
var stdouts = [];
|
||
|
var stderrs = [];
|
||
|
|
||
|
eachSeries(commands, function(command, next) {
|
||
|
exec(command, objectAssign({maxBuffer: TEN_MEBIBYTE}, options), function(err, stdout, stderr) {
|
||
|
stdouts.push(stdout);
|
||
|
stderrs.push(stderr);
|
||
|
next(err);
|
||
|
});
|
||
|
}, function(err) {
|
||
|
if (cb) {
|
||
|
cb(err || null, stdouts, stderrs);
|
||
|
}
|
||
|
});
|
||
|
};
|