function readFileToArr(fReadName, callback) { var fRead = fs.createReadStream(fReadName); var objReadline = readline.createInterface({ input: fRead }); objReadline.on('line', function (line) { if (line.indexOf('===') != -1) { titleHandle(line); } else { dataHandle(line); } }); objReadline.on('close', function () { callback(); }); }
function titleHandle(line) { let dateString = line; let beginDate = line.split(" ")[1]; let endDate = line.split(" ")[3]; outObj[`${beginDate} - ${endDate}`] = {}; outObjKey = `${beginDate} - ${endDate}`; }
function dataHandle(line) { if(line === "") return; let splitArr = line.split(" "); let name = splitArr[0]; let commitNum = +splitArr[1]; let countArr = splitArr[2].split(","); let addNum = +countArr[0] || 0; let removeNum = +countArr[1] || 0; let pureAddNum = +countArr[2] || 0; if (outObj[outObjKey][name]) { outObj[outObjKey][name]['commitNum'] += commitNum; outObj[outObjKey][name]['addNum'] += addNum; outObj[outObjKey][name]['removeNum'] += removeNum; outObj[outObjKey][name]['pureAddNum'] += pureAddNum; } else { outObj[outObjKey][name] = { commitNum, addNum, removeNum, pureAddNum } }
}
readFileToArr('./gitCount.txt', buildExcel);
function buildExcel() { let excelObj = []; for (let date in outObj) { let sheetName = date; let excelDate = []; let title = ['Git ID', '提交次数', '增加行数', '删除行数', '净增加行数']; excelDate.push(title); for (let item in outObj[date]) { excelDate.push([item, outObj[date][item]['commitNum'], outObj[date][item]['addNum'], outObj[date][item]['removeNum'], outObj[date][item]['pureAddNum'], ]) } excelObj.push({ name: sheetName, data: excelDate }) } execExcel(excelObj); }
function execExcel(excelObj) { let buffer = xlsx.build(excelObj); fs.writeFileSync('./git统计.xlsx', buffer, { 'flag': 'w' }); //生成excel the_content是excel的名字,大家可以随意命名