45 lines
839 B
JavaScript
45 lines
839 B
JavaScript
var childProcess = require( "child_process" );
|
|
|
|
module.exports = function(/* command, args, options, callback */) {
|
|
var args = [].slice.call( arguments );
|
|
var callback = args.pop();
|
|
var stdout = "";
|
|
var stderr = "";
|
|
var child = childProcess.spawn.apply( childProcess, args );
|
|
var hadError = false;
|
|
|
|
child.on( "error", function( error ) {
|
|
hadError = true;
|
|
callback( error );
|
|
});
|
|
|
|
if ( child.stdout ) {
|
|
child.stdout.on( "data", function( data ) {
|
|
stdout += data;
|
|
});
|
|
}
|
|
|
|
if ( child.stderr ) {
|
|
child.stderr.on( "data", function( data ) {
|
|
stderr += data;
|
|
});
|
|
}
|
|
|
|
child.on( "close", function( code ) {
|
|
if ( hadError ) {
|
|
return;
|
|
}
|
|
|
|
var error;
|
|
if ( code ) {
|
|
error = new Error( stderr );
|
|
error.code = code;
|
|
return callback( error );
|
|
}
|
|
|
|
callback( null, stdout, stderr );
|
|
});
|
|
|
|
return child;
|
|
};
|