git-stats/bin/git-stats

91 lines
2.6 KiB
Plaintext
Raw Normal View History

2015-01-25 20:44:18 +01:00
#!/usr/bin/env node
2015-01-30 14:14:28 +01:00
// Dependencies
var GitStats = require("../lib")
, Fs = require("fs")
2015-02-01 09:46:51 +01:00
, AnsiParser = require("ansi-parser")
, Couleurs = require("couleurs")()
2015-01-30 14:14:28 +01:00
;
2015-01-25 20:48:59 +01:00
2015-02-01 12:45:00 +01:00
const THEMES = {
DARK: {
background: "#11181F"
, foreground: "#565656"
, squares: {
"⬚": Couleurs.fg("▣", "#565656")
, "▢": Couleurs.fg("▣", "#00B346")
, "▤": Couleurs.fg("▣", "#009139")
, "▣": Couleurs.fg("▣", "#15763b")
, "⬛": Couleurs.fg("▣", "#005220")
}
}
, LIGHT: {
background: "#ffffff"
, foreground: "#565656"
, squares: {
"⬚": Couleurs.fg("▣", "#C2C2C2")
, "▢": Couleurs.fg("▣", "#00B346")
, "▤": Couleurs.fg("▣", "#009139")
, "▣": Couleurs.fg("▣", "#15763b")
, "⬛": Couleurs.fg("▣", "#005220")
}
}
2015-02-01 09:46:51 +01:00
};
2015-01-30 14:14:28 +01:00
// CLI options
2015-01-25 20:48:59 +01:00
switch (process.argv[2]) {
case "--record":
2015-01-26 09:25:37 +01:00
var data = process.argv[3].replace(/^\"|\"$/g, "");
2015-01-25 20:48:59 +01:00
try {
data = JSON.parse(data);
} catch (e) {
throw e;
}
GitStats.record(data, function (err) {
if (err) { throw err; }
});
break;
2015-01-26 09:10:06 +01:00
case "--help":
2015-01-30 14:14:28 +01:00
console.log(Fs.readFileSync("./docs/help"));
break;
case "-v":
console.log(require("../package.json").version);
2015-01-26 09:10:06 +01:00
break;
2015-01-25 20:48:59 +01:00
default:
2015-01-27 11:43:47 +01:00
GitStats.ansiCalendar(function (err, data) {
2015-02-01 12:45:00 +01:00
if (err) throw err;
data = AnsiParser.removeAnsi(data);
if (process.argv.indexOf("--no-ansi") === -1) {
2015-02-01 13:40:40 +01:00
var theme = THEMES.DARK
2015-02-01 12:45:00 +01:00
, parsed = AnsiParser.parse(data)
, i = 0
, c = null
, sq = Object.keys(theme.squares)
;
data = data.replace(/╝|╗/gm, "═$&")
data = data.replace(/║$/gm, " $&")
2015-02-01 13:40:40 +01:00
if (process.argv.indexOf("--light") !== -1) {
theme = THEMES.LIGHT;
2015-02-01 12:45:00 +01:00
}
data = data.split("");
for (; i < data.length; ++i) {
c = data[i];
if (sq.indexOf(c) !== -1) {
data[i] = theme.squares[c];
} else if (/^(╔|═|╗|║|╝|═|╚|║|\-|\:|[a-z]|[0-9])$/i.test(c)) {
data[i] = Couleurs.fg(c, theme.foreground);
}
}
2015-02-01 09:46:51 +01:00
2015-02-01 12:45:00 +01:00
data = data.join("").split("\n").map(function (c) {
return Couleurs.bg(c, theme.background)
}).join("\n")
2015-02-01 09:46:51 +01:00
}
2015-02-01 12:45:00 +01:00
console.log(err || data);
2015-01-25 20:48:59 +01:00
});
break;
}