const child_process = require('child_process'); const async = require('async'); const colors = require('ansi-colors'); const log = require('fancy-log'); const TAG = colors.green('[exec]'); const verbose = process.argv.indexOf('--verbose') > -1; const queue = async.queue((task, done) => { if (verbose) log(TAG, colors.magenta(task.command)); //process.chdir(task.dir); child_process.exec(task.command, {cwd: task.dir, maxBuffer: 1024 * 5000}, (err, stdout, stderr) => { if (verbose) log(TAG, err ? colors.red(err) : '', stdout, colors.red(stderr)); if (err) { task.failure(stderr || stdout || err); } else { task.success({stdout: stdout, stderr: stderr}); } done(); }); }); module.exports = (dir, command) => { return new Promise((success, failure) => { queue.push({ dir: dir, command: command, success: success, failure: failure, }); }); };