50 lines
1.1 KiB
JavaScript
50 lines
1.1 KiB
JavaScript
var spawn = require('child_process').spawn;
|
|
var env = require('./env');
|
|
|
|
|
|
/**
|
|
creates a function that pipes arguments and process to an executable function
|
|
**/
|
|
var cli = function( executable ) {
|
|
return function(){
|
|
args = process.argv.slice(2);
|
|
cp = executable.apply(null, args);
|
|
|
|
cp.stdout.pipe(process.stdout);
|
|
cp.stderr.pipe(process.stderr);
|
|
cp.on('exit', process.exit);
|
|
cp.on('error', function(err){
|
|
console.error(err);
|
|
});
|
|
|
|
process.on('SIGTERM', function() {
|
|
cp.kill('SIGTERM');
|
|
process.exit(1);
|
|
});
|
|
}
|
|
}
|
|
|
|
/**
|
|
creates a function that calls cli command + argus
|
|
appends functions arguments to command
|
|
*/
|
|
var executable = function(command, args) {
|
|
var exe = function() {
|
|
var _args = ( args || [] ).slice(0);
|
|
for( a in arguments ) {
|
|
_args.push( arguments[a] );
|
|
}
|
|
|
|
var cp = spawn( command, _args, {
|
|
env: env
|
|
});
|
|
|
|
return cp;
|
|
}
|
|
|
|
exe.cli = cli( exe );
|
|
|
|
return exe;
|
|
}
|
|
|
|
module.exports = executable; |