git-contributor-stats
Version:
CLI to compute contributor and repository statistics from a Git repository (commits, lines added/deleted, frequency, heatmap, bus-factor), with filters and multiple output formats.
51 lines (50 loc) • 1.66 kB
JavaScript
import { e as printCSV, f as printTable } from "../chunks/analytics-SL4YC1kG.mjs";
import { d as parseTopStatsMetrics, h as formatTopStatsLines } from "../chunks/utils-CFufYn8A.mjs";
import "node:fs";
import "node:path";
function handleStdoutOutput(final, opts = {}) {
const stdoutWantsJSON = opts.json || String(opts.format || "").toLowerCase() === "json";
const stdoutWantsCSV = String(opts.format || "").toLowerCase() === "csv";
const labelBy = final.basic?.labelBy || opts.labelBy || "name";
if (stdoutWantsJSON) {
console.log(JSON.stringify(final, null, 2));
return;
}
const csvContributors = final.topContributors.map((tc) => ({
key: tc.email ?? tc.name ?? "",
name: tc.name ?? "",
emails: tc.email ? [tc.email] : [],
commits: tc.commits,
additions: tc.added,
deletions: tc.deleted,
changes: tc.changes,
firstCommitDate: void 0,
lastCommitDate: void 0
}));
if (stdoutWantsCSV) {
printCSV(csvContributors, labelBy);
return;
}
if (opts.topStats && opts.topStats.length > 0) {
console.log("Top stats:");
const topStatsMetrics = parseTopStatsMetrics(opts.topStats);
const topStatsRecord = {};
if (final.topStats) {
for (const key of Object.keys(final.topStats)) {
const value = final.topStats[key];
if (value) {
topStatsRecord[key] = value;
}
}
}
for (const l of formatTopStatsLines(topStatsRecord, topStatsMetrics)) {
console.log(`- ${l}`);
}
console.log("");
}
printTable(csvContributors, final.basic.meta, labelBy);
}
export {
handleStdoutOutput as h
};
//# sourceMappingURL=output.mjs.map