mirror of
https://github.com/IonicaBizau/git-stats.git
synced 2024-12-22 13:22:11 +01:00
Parse the commits
This commit is contained in:
parent
02766d4834
commit
a5cb4d6a93
1 changed files with 38 additions and 15 deletions
53
lib/index.js
53
lib/index.js
|
@ -9,7 +9,10 @@ var Ul = require("ul")
|
|||
, CliPie = require("cli-pie")
|
||||
, CliGhCal = require("cli-gh-cal")
|
||||
, GitLogParser = require("gitlog-parser").parse
|
||||
, Exec = require("child_process").exec
|
||||
, ChildProcess = require("child_process")
|
||||
, Exec = ChildProcess.exec
|
||||
, Spawn = ChildProcess.spawn
|
||||
, ProgressBar = require("progress")
|
||||
;
|
||||
|
||||
// Constants
|
||||
|
@ -367,22 +370,42 @@ GitStats.globalActivity = function (options, callback) {
|
|||
var commits = {}
|
||||
, today = null
|
||||
, cal = []
|
||||
, isFinished = false
|
||||
, timeout = null
|
||||
, progress = null
|
||||
, complete = 0
|
||||
;
|
||||
|
||||
GitLogParser(Exec("git log", { cwd: options.repo }).stdout).on("commit", function(commit) {
|
||||
today = Moment(commit.date).format(DATE_FORMAT);
|
||||
commits[today] = commits[today] || 0;
|
||||
++commits[today];
|
||||
}).on("error", function (err) {
|
||||
callback(err);
|
||||
}).on("finish", function () {
|
||||
Object.keys(commits).forEach(function (c) {
|
||||
cal.push([c, commits[c]])
|
||||
Exec("git rev-list HEAD --count", { cwd: options.repo }, function (err, commitCount) {
|
||||
if (err) { return callback(err); }
|
||||
commitCount = parseInt(commitCount);
|
||||
setTimeout(function () {
|
||||
if (isFinished) { return; }
|
||||
progress = new ProgressBar(":bar", { total: commitCount - complete });
|
||||
}, 10);
|
||||
// TODO Take only the commits from the provided range (start - end)
|
||||
GitLogParser(Spawn("git", ["log"], { cwd: options.repo }).stdout).on("commit", function(commit) {
|
||||
today = Moment(commit.date).format(DATE_FORMAT);
|
||||
commits[today] = commits[today] || 0;
|
||||
++commits[today];
|
||||
++complete;
|
||||
if (progress) {
|
||||
progress.tick();
|
||||
}
|
||||
}).on("error", function (err) {
|
||||
clearTimeout(timeout);
|
||||
callback(err);
|
||||
}).on("finish", function () {
|
||||
clearTimeout(timeout);
|
||||
isFinished = true;
|
||||
Object.keys(commits).forEach(function (c) {
|
||||
cal.push([c, commits[c]])
|
||||
});
|
||||
callback(null, CliGhCal(cal, {
|
||||
theme: options.theme
|
||||
, start: options.start
|
||||
, end: options.end
|
||||
}));
|
||||
});
|
||||
callback(null, CliGhCal(cal, {
|
||||
theme: options.theme
|
||||
, start: options.start
|
||||
, end: options.end
|
||||
}));
|
||||
});
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue