2015-02-12 58 views
0

節點每個Js文件只運行一個Exec(子進程) 有什麼方法可以在單個Js文件中運行多個exec命令? 在異步系列函數exec執行命令後停止, 我如何使所有三個exec函數執行,而不是出來的項目?節點每個js文件運行一個exec

這是我曾嘗試:

var exec = require('child_process').exec; 
var fs = require('fs'); 
var async = require('async'); 


var find = /regex/; 

async.series({ 
one:function(callback){ 
exec('git ls-remote',{maxBuffer: 1024 * 500}, function(error, stdout,  stderr) { 
    fs.writeFile(__dirname+'/idsandDates.txt',stdout, function (err) { 
     if (err) throw err; 
     //console.log(stdout); 
    }); 
    console.log('stderr Here: ' + stderr); 
    if (error !== null) { 
     console.log('exec error Here: ' + error); 
     callback(null,1); 
    } 
}); 

} 
, 
two:function(callback){ 
var LineByLineReader = require('line-by-line'), 
lr = new LineByLineReader('idsandDates.txt'); 
var commitId; 
lr.on('error', function (err) { 
    // 'err' contains error object 
}); 

lr.on('line', function (line) { 
    if(line.search(find)>0){ 
     commitId = line.split("\t")[0]; 
    } 
}); 

lr.on('end', function() { 
    console.log('hello'); 
    exec('git show -s'+commitId,{maxBuffer: 1024 * 500}, function(error, stdout,stderr) { 
     fs.writeFile(__dirname+'/commitDateFile.txt',stdout, function (err)  { 
      if (err) throw err; 
      console.log(stdout); 
     }); 
     callback(null,2); 
    }); 
}); 
} 

, 
three:function(callback){ 
var find = /Date:/; 
var LineByLineReader = require('line-by-line'), 
lr = new LineByLineReader('commitDateFile.txt'); 
var commitDate; 
var i = 1; 

lr.on('error', function (err) { 
    // 'err' contains error object 
}); 

lr.on('line', function (line) { 
    if(i==3){ 
     commitDate= line.slice(5,line.length).trim(); 
    } 
    i++; 
}); 

lr.on('end', function(){ 
    var date = new Date(commitDate);//--since='+trueDate+'--name-only --pretty=format: 
    var trueDate = date.getFullYear()+'-'+date.getMonth()+'-'+date.getDay(); 
    console.log(trueDate); 
    var exec = require('child_process').exec; 
    exec('git log --since='+trueDate+' --name-only --pretty=format:',{maxBuffer: 1024 * 500}, function(error, stdout, stderr) { 
     fs.writeFile(__dirname+'/modiiedJs.txt',stdout, function (err) { 
     if (err) throw err; 
     console.log(stdout); 
     }); 
     console.log('stderr her1: ' + stderr); 
     if (error !== null) { 
      console.log('exec error Here2: ' + error); 
      callback(null,3); 
     } 
    }); 

}); 

} 
}, 
function(err, results) { 
    console.log(results); 
} 
); 

回答

0

UPDATE:

嘿, 我已經解決了執行使用「Q」 框架節點使用的承諾,然後方法多EXEC的問題

非常感謝那些試圖解決我的問題的人:)

Happy Co丁::)