const async = require('async');
const child = require('child_process');
const colors = require('colors');
const fs = require('fs');
const mkdirp = require('mkdirp');
const p = require('path');
const util = require('util');
function exec(command, opts, cb) {
console.log('%s | %s', command.meta.task.cyan, command.exec);
var logFile = p.join(opts.logDir, util.format('%s.log', command.meta.type));
var cproc = child.exec(command.exec, opts, cb);
var wstream = fs.createWriteStream(logFile);
cproc.stdout.on('data', function (data) {
process.stdout.write(data);
cproc.stderr.on('data', function (data) {
process.stderr.write(data);
function execSeries(commands, opts, cb) {
function _exec(command, cb) {
opts.logDir = opts.logDir.replace(/\{lang\}/g, command.meta.language);
mkdirp(opts.logDir, function (err) {
if (err) { cb(err); } else {
async.eachSeries(commands, _exec, cb);
exports.execSeries = execSeries;