devbrief 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +101 -0
- package/dist/ai.d.ts +7 -0
- package/dist/ai.d.ts.map +1 -0
- package/dist/ai.js +35 -0
- package/dist/ai.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +394 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +15 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +97 -0
- package/dist/config.js.map +1 -0
- package/dist/digest.d.ts +25 -0
- package/dist/digest.d.ts.map +1 -0
- package/dist/digest.js +109 -0
- package/dist/digest.js.map +1 -0
- package/dist/format.d.ts +27 -0
- package/dist/format.d.ts.map +1 -0
- package/dist/format.js +189 -0
- package/dist/format.js.map +1 -0
- package/dist/git.d.ts +23 -0
- package/dist/git.d.ts.map +1 -0
- package/dist/git.js +150 -0
- package/dist/git.js.map +1 -0
- package/dist/linkedin.d.ts +8 -0
- package/dist/linkedin.d.ts.map +1 -0
- package/dist/linkedin.js +74 -0
- package/dist/linkedin.js.map +1 -0
- package/dist/parser.d.ts +9 -0
- package/dist/parser.d.ts.map +1 -0
- package/dist/parser.js +17 -0
- package/dist/parser.js.map +1 -0
- package/dist/presets.d.ts +8 -0
- package/dist/presets.d.ts.map +1 -0
- package/dist/presets.js +16 -0
- package/dist/presets.js.map +1 -0
- package/package.json +62 -0
package/dist/config.js
ADDED
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { mkdir, readFile, writeFile } from "node:fs/promises";
|
|
2
|
+
import { homedir } from "node:os";
|
|
3
|
+
import { dirname, join, resolve } from "node:path";
|
|
4
|
+
export function getConfigPath(configDir = defaultConfigDir()) {
|
|
5
|
+
return join(configDir, "config.json");
|
|
6
|
+
}
|
|
7
|
+
export async function readConfig(configDir = defaultConfigDir()) {
|
|
8
|
+
try {
|
|
9
|
+
const contents = await readFile(getConfigPath(configDir), "utf8");
|
|
10
|
+
return JSON.parse(contents);
|
|
11
|
+
}
|
|
12
|
+
catch (error) {
|
|
13
|
+
if (isMissingFileError(error)) {
|
|
14
|
+
return {};
|
|
15
|
+
}
|
|
16
|
+
throw error;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
export async function saveGroqApiKey(groqApiKey, configDir = defaultConfigDir()) {
|
|
20
|
+
const currentConfig = await readConfig(configDir);
|
|
21
|
+
return writeConfig({
|
|
22
|
+
...currentConfig,
|
|
23
|
+
groqApiKey,
|
|
24
|
+
}, configDir);
|
|
25
|
+
}
|
|
26
|
+
export async function addRepoRoot(repoRoot, configDir = defaultConfigDir()) {
|
|
27
|
+
const currentConfig = await readConfig(configDir);
|
|
28
|
+
const normalizedRoot = resolve(repoRoot);
|
|
29
|
+
const repoRoots = new Set(currentConfig.repoRoots ?? []);
|
|
30
|
+
repoRoots.add(normalizedRoot);
|
|
31
|
+
return writeConfig({
|
|
32
|
+
...currentConfig,
|
|
33
|
+
repoRoots: [...repoRoots].sort(),
|
|
34
|
+
}, configDir);
|
|
35
|
+
}
|
|
36
|
+
export async function getRepoRoots(configDir = defaultConfigDir()) {
|
|
37
|
+
return (await readConfig(configDir)).repoRoots ?? [];
|
|
38
|
+
}
|
|
39
|
+
async function writeConfig(config, configDir = defaultConfigDir()) {
|
|
40
|
+
const configPath = getConfigPath(configDir);
|
|
41
|
+
const nextConfig = {
|
|
42
|
+
...config,
|
|
43
|
+
};
|
|
44
|
+
if (nextConfig.repoRoots?.length === 0) {
|
|
45
|
+
delete nextConfig.repoRoots;
|
|
46
|
+
}
|
|
47
|
+
if (!nextConfig.groqApiKey) {
|
|
48
|
+
delete nextConfig.groqApiKey;
|
|
49
|
+
}
|
|
50
|
+
await mkdir(dirname(configPath), { recursive: true });
|
|
51
|
+
await writeFile(configPath, `${JSON.stringify(nextConfig, null, 2)}\n`, {
|
|
52
|
+
encoding: "utf8",
|
|
53
|
+
mode: 0o600,
|
|
54
|
+
});
|
|
55
|
+
return configPath;
|
|
56
|
+
}
|
|
57
|
+
export async function removeRepoRoot(repoRoot, configDir = defaultConfigDir()) {
|
|
58
|
+
const currentConfig = await readConfig(configDir);
|
|
59
|
+
const normalizedRoot = resolve(repoRoot);
|
|
60
|
+
return writeConfig({
|
|
61
|
+
...currentConfig,
|
|
62
|
+
repoRoots: (currentConfig.repoRoots ?? []).filter((root) => root !== normalizedRoot),
|
|
63
|
+
}, configDir);
|
|
64
|
+
}
|
|
65
|
+
export async function clearRepoRoots(configDir = defaultConfigDir()) {
|
|
66
|
+
const currentConfig = await readConfig(configDir);
|
|
67
|
+
return writeConfig({
|
|
68
|
+
...currentConfig,
|
|
69
|
+
repoRoots: [],
|
|
70
|
+
}, configDir);
|
|
71
|
+
}
|
|
72
|
+
export async function clearGroqApiKey(configDir = defaultConfigDir()) {
|
|
73
|
+
const currentConfig = await readConfig(configDir);
|
|
74
|
+
return writeConfig({
|
|
75
|
+
...currentConfig,
|
|
76
|
+
groqApiKey: undefined,
|
|
77
|
+
}, configDir);
|
|
78
|
+
}
|
|
79
|
+
export async function resolveGroqApiKey(env = process.env, configDir = defaultConfigDir()) {
|
|
80
|
+
return env.GROQ_API_KEY ?? (await readConfig(configDir)).groqApiKey;
|
|
81
|
+
}
|
|
82
|
+
export function maskSecret(secret) {
|
|
83
|
+
if (secret.length <= 8) {
|
|
84
|
+
return "*".repeat(secret.length);
|
|
85
|
+
}
|
|
86
|
+
return `${secret.slice(0, 4)}${"*".repeat(Math.max(secret.length - 8, 4))}${secret.slice(-4)}`;
|
|
87
|
+
}
|
|
88
|
+
function defaultConfigDir() {
|
|
89
|
+
return process.env.COMMITLENS_CONFIG_DIR ?? join(homedir(), ".commitlens");
|
|
90
|
+
}
|
|
91
|
+
function isMissingFileError(error) {
|
|
92
|
+
return (typeof error === "object" &&
|
|
93
|
+
error !== null &&
|
|
94
|
+
"code" in error &&
|
|
95
|
+
error.code === "ENOENT");
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/digest.d.ts
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { RepositoryActivity } from "./git.js";
|
|
2
|
+
import type { CommitSummary } from "./parser.js";
|
|
3
|
+
export type DigestCommit = CommitSummary & {
|
|
4
|
+
repo?: string;
|
|
5
|
+
};
|
|
6
|
+
export type CountItem = {
|
|
7
|
+
name: string;
|
|
8
|
+
count: number;
|
|
9
|
+
};
|
|
10
|
+
export type ActivityDigest = {
|
|
11
|
+
totalCommits: number;
|
|
12
|
+
activeDays: number;
|
|
13
|
+
currentStreak: number;
|
|
14
|
+
longestStreak: number;
|
|
15
|
+
commitsByAuthor: CountItem[];
|
|
16
|
+
commitsByRepo: CountItem[];
|
|
17
|
+
mostActiveDay: CountItem | null;
|
|
18
|
+
recentHighlights: string[];
|
|
19
|
+
};
|
|
20
|
+
export type BuildDigestOptions = {
|
|
21
|
+
today?: string;
|
|
22
|
+
};
|
|
23
|
+
export declare function buildDigest(commits: DigestCommit[], options?: BuildDigestOptions): ActivityDigest;
|
|
24
|
+
export declare function buildDigestFromActivity(activity: RepositoryActivity[], options?: BuildDigestOptions): ActivityDigest;
|
|
25
|
+
//# sourceMappingURL=digest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"digest.d.ts","sourceRoot":"","sources":["../src/digest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AACnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,MAAM,MAAM,YAAY,GAAG,aAAa,GAAG;IACzC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,SAAS,EAAE,CAAC;IAC7B,aAAa,EAAE,SAAS,EAAE,CAAC;IAC3B,aAAa,EAAE,SAAS,GAAG,IAAI,CAAC;IAChC,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,wBAAgB,WAAW,CACzB,OAAO,EAAE,YAAY,EAAE,EACvB,OAAO,GAAE,kBAAuB,GAC/B,cAAc,CAgBhB;AAED,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,kBAAkB,EAAE,EAC9B,OAAO,GAAE,kBAAuB,GAC/B,cAAc,CAUhB"}
|
package/dist/digest.js
ADDED
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
export function buildDigest(commits, options = {}) {
|
|
2
|
+
const dates = [...new Set(commits.map((commit) => commit.date))].sort();
|
|
3
|
+
return {
|
|
4
|
+
totalCommits: commits.length,
|
|
5
|
+
activeDays: dates.length,
|
|
6
|
+
currentStreak: calculateCurrentStreak(dates, options.today ?? getTodayDate()),
|
|
7
|
+
longestStreak: calculateLongestStreak(dates),
|
|
8
|
+
commitsByAuthor: countBy(commits, (commit) => commit.author),
|
|
9
|
+
commitsByRepo: countBy(commits.filter((commit) => commit.repo), (commit) => commit.repo ?? ""),
|
|
10
|
+
mostActiveDay: getMostActiveWeekday(commits),
|
|
11
|
+
recentHighlights: getRecentHighlights(commits),
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
export function buildDigestFromActivity(activity, options = {}) {
|
|
15
|
+
return buildDigest(activity.flatMap((repo) => repo.commits.map((commit) => ({
|
|
16
|
+
...commit,
|
|
17
|
+
repo: repo.name,
|
|
18
|
+
}))), options);
|
|
19
|
+
}
|
|
20
|
+
function calculateCurrentStreak(sortedDates, today) {
|
|
21
|
+
if (sortedDates.length === 0) {
|
|
22
|
+
return 0;
|
|
23
|
+
}
|
|
24
|
+
const dateSet = new Set(sortedDates);
|
|
25
|
+
if (!dateSet.has(today)) {
|
|
26
|
+
return 0;
|
|
27
|
+
}
|
|
28
|
+
const descendingDates = [...sortedDates].reverse();
|
|
29
|
+
let streak = 1;
|
|
30
|
+
for (let index = 1; index < descendingDates.length; index += 1) {
|
|
31
|
+
if (daysBetween(descendingDates[index], descendingDates[index - 1]) !== 1) {
|
|
32
|
+
break;
|
|
33
|
+
}
|
|
34
|
+
streak += 1;
|
|
35
|
+
}
|
|
36
|
+
return streak;
|
|
37
|
+
}
|
|
38
|
+
function calculateLongestStreak(sortedDates) {
|
|
39
|
+
if (sortedDates.length === 0) {
|
|
40
|
+
return 0;
|
|
41
|
+
}
|
|
42
|
+
let current = 1;
|
|
43
|
+
let longest = 1;
|
|
44
|
+
for (let index = 1; index < sortedDates.length; index += 1) {
|
|
45
|
+
if (daysBetween(sortedDates[index - 1], sortedDates[index]) === 1) {
|
|
46
|
+
current += 1;
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
current = 1;
|
|
50
|
+
}
|
|
51
|
+
longest = Math.max(longest, current);
|
|
52
|
+
}
|
|
53
|
+
return longest;
|
|
54
|
+
}
|
|
55
|
+
function countBy(items, getName) {
|
|
56
|
+
const counts = new Map();
|
|
57
|
+
for (const item of items) {
|
|
58
|
+
const name = getName(item);
|
|
59
|
+
if (!name) {
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
62
|
+
counts.set(name, (counts.get(name) ?? 0) + 1);
|
|
63
|
+
}
|
|
64
|
+
return [...counts.entries()]
|
|
65
|
+
.map(([name, count]) => ({ name, count }))
|
|
66
|
+
.sort((left, right) => right.count - left.count || left.name.localeCompare(right.name));
|
|
67
|
+
}
|
|
68
|
+
function getMostActiveWeekday(commits) {
|
|
69
|
+
const [mostActiveDay] = countBy(commits, (commit) => getWeekdayName(commit.date));
|
|
70
|
+
return mostActiveDay ?? null;
|
|
71
|
+
}
|
|
72
|
+
function getRecentHighlights(commits) {
|
|
73
|
+
const highlights = [];
|
|
74
|
+
const seen = new Set();
|
|
75
|
+
for (const commit of commits) {
|
|
76
|
+
const subject = commit.repo ? `[${commit.repo}] ${commit.subject}` : commit.subject;
|
|
77
|
+
if (seen.has(subject)) {
|
|
78
|
+
continue;
|
|
79
|
+
}
|
|
80
|
+
highlights.push(subject);
|
|
81
|
+
seen.add(subject);
|
|
82
|
+
if (highlights.length === 5) {
|
|
83
|
+
break;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return highlights;
|
|
87
|
+
}
|
|
88
|
+
function daysBetween(startDate, endDate) {
|
|
89
|
+
const millisecondsPerDay = 24 * 60 * 60 * 1000;
|
|
90
|
+
return Math.round((parseDate(endDate).getTime() - parseDate(startDate).getTime()) / millisecondsPerDay);
|
|
91
|
+
}
|
|
92
|
+
function getWeekdayName(date) {
|
|
93
|
+
return new Intl.DateTimeFormat("en-US", {
|
|
94
|
+
weekday: "long",
|
|
95
|
+
timeZone: "UTC",
|
|
96
|
+
}).format(parseDate(date));
|
|
97
|
+
}
|
|
98
|
+
function parseDate(date) {
|
|
99
|
+
const [year, month, day] = date.split("-").map(Number);
|
|
100
|
+
return new Date(Date.UTC(year ?? 0, (month ?? 1) - 1, day ?? 1));
|
|
101
|
+
}
|
|
102
|
+
function getTodayDate() {
|
|
103
|
+
const date = new Date();
|
|
104
|
+
const year = date.getFullYear();
|
|
105
|
+
const month = String(date.getMonth() + 1).padStart(2, "0");
|
|
106
|
+
const day = String(date.getDate()).padStart(2, "0");
|
|
107
|
+
return `${year}-${month}-${day}`;
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=digest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"digest.js","sourceRoot":"","sources":["../src/digest.ts"],"names":[],"mappings":"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"}
|
package/dist/format.d.ts
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { ActivityDigest } from "./digest.js";
|
|
2
|
+
import type { RepositoryActivity } from "./git.js";
|
|
3
|
+
export type ReportFormat = "text" | "markdown" | "json";
|
|
4
|
+
export type ReportDocument = {
|
|
5
|
+
title: string;
|
|
6
|
+
scope: string;
|
|
7
|
+
range: string;
|
|
8
|
+
repo?: string;
|
|
9
|
+
repositoriesScanned?: number;
|
|
10
|
+
digest: ActivityDigest;
|
|
11
|
+
repositories?: RepositoryActivity[];
|
|
12
|
+
};
|
|
13
|
+
export type SaveReportOptions = {
|
|
14
|
+
content: string;
|
|
15
|
+
format: ReportFormat;
|
|
16
|
+
outputPath?: string | boolean;
|
|
17
|
+
filenamePrefix?: string;
|
|
18
|
+
};
|
|
19
|
+
export type FormatReportOptions = {
|
|
20
|
+
color?: boolean;
|
|
21
|
+
};
|
|
22
|
+
export declare function formatReport(document: ReportDocument, format: ReportFormat, options?: FormatReportOptions): string;
|
|
23
|
+
export declare function formatTextReport(document: ReportDocument, options?: FormatReportOptions): string;
|
|
24
|
+
export declare function formatMarkdownReport(document: ReportDocument): string;
|
|
25
|
+
export declare function saveReport(options: SaveReportOptions): Promise<string>;
|
|
26
|
+
export declare function isReportFormat(format: string): format is ReportFormat;
|
|
27
|
+
//# sourceMappingURL=format.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAa,MAAM,aAAa,CAAC;AAC7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAEnD,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,UAAU,GAAG,MAAM,CAAC;AAExD,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,MAAM,EAAE,cAAc,CAAC;IACvB,YAAY,CAAC,EAAE,kBAAkB,EAAE,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,YAAY,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC9B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,cAAc,EACxB,MAAM,EAAE,YAAY,EACpB,OAAO,GAAE,mBAAwB,GAChC,MAAM,CAYR;AAED,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,cAAc,EACxB,OAAO,GAAE,mBAAwB,GAChC,MAAM,CAuDR;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM,CAmDrE;AAED,wBAAsB,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAK5E;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,IAAI,YAAY,CAErE"}
|
package/dist/format.js
ADDED
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
import { mkdir, writeFile } from "node:fs/promises";
|
|
2
|
+
import { join, resolve } from "node:path";
|
|
3
|
+
import chalk from "chalk";
|
|
4
|
+
export function formatReport(document, format, options = {}) {
|
|
5
|
+
const reportDocument = withoutInactiveRepositories(document);
|
|
6
|
+
if (format === "json") {
|
|
7
|
+
return `${JSON.stringify(reportDocument, null, 2)}\n`;
|
|
8
|
+
}
|
|
9
|
+
if (format === "markdown") {
|
|
10
|
+
return formatMarkdownReport(reportDocument);
|
|
11
|
+
}
|
|
12
|
+
return formatTextReport(reportDocument, options);
|
|
13
|
+
}
|
|
14
|
+
export function formatTextReport(document, options = {}) {
|
|
15
|
+
const theme = createTheme(options.color ?? true);
|
|
16
|
+
const lines = [
|
|
17
|
+
theme.title("CommitLens"),
|
|
18
|
+
theme.accent("=========="),
|
|
19
|
+
theme.dim("Offline Git activity digest"),
|
|
20
|
+
"",
|
|
21
|
+
formatMetaLine("Scope", document.scope, theme),
|
|
22
|
+
formatMetaLine("Range", document.range, theme),
|
|
23
|
+
];
|
|
24
|
+
if (document.repo) {
|
|
25
|
+
lines.push(formatMetaLine("Repo", document.repo, theme));
|
|
26
|
+
}
|
|
27
|
+
if (document.repositoriesScanned !== undefined) {
|
|
28
|
+
lines.push(formatMetaLine("Repositories scanned", String(document.repositoriesScanned), theme));
|
|
29
|
+
}
|
|
30
|
+
lines.push("", formatSectionTitle("Summary", theme), ` ${formatNumber(document.digest.totalCommits)} ${pluralize(document.digest.totalCommits, "commit")} across ${formatNumber(document.digest.activeDays)} ${pluralize(document.digest.activeDays, "active day")}`, formatStatLine("Current streak", formatDays(document.digest.currentStreak)), formatStatLine("Longest streak", formatDays(document.digest.longestStreak)));
|
|
31
|
+
if (document.digest.mostActiveDay) {
|
|
32
|
+
lines.push(formatStatLine("Most active day", document.digest.mostActiveDay.name));
|
|
33
|
+
}
|
|
34
|
+
appendCountSection(lines, "Top authors", document.digest.commitsByAuthor, theme);
|
|
35
|
+
appendCountSection(lines, "Top repos", document.digest.commitsByRepo, theme);
|
|
36
|
+
appendListSection(lines, "Recent highlights", document.digest.recentHighlights, theme);
|
|
37
|
+
const activeRepos = document.repositories?.filter((repo) => repo.commits.length > 0) ?? [];
|
|
38
|
+
if (activeRepos.length > 0) {
|
|
39
|
+
lines.push("", formatSectionTitle("Repo details", theme));
|
|
40
|
+
for (const repo of activeRepos) {
|
|
41
|
+
lines.push("", `${theme.bold(repo.name)} ${theme.dim("-")} ${repo.commits.length} ${pluralize(repo.commits.length, "commit")}`);
|
|
42
|
+
for (const commit of repo.commits.slice(0, 5)) {
|
|
43
|
+
lines.push(` ${theme.dim(commit.date)} ${theme.warning(commit.hash)} ${commit.subject} ${theme.dim(`(${commit.author})`)}`);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return `${lines.join("\n")}\n`;
|
|
48
|
+
}
|
|
49
|
+
export function formatMarkdownReport(document) {
|
|
50
|
+
const lines = [
|
|
51
|
+
"# CommitLens",
|
|
52
|
+
"",
|
|
53
|
+
"Offline Git activity digest.",
|
|
54
|
+
"",
|
|
55
|
+
`- Scope: ${document.scope}`,
|
|
56
|
+
`- Range: ${document.range}`,
|
|
57
|
+
];
|
|
58
|
+
if (document.repo) {
|
|
59
|
+
lines.push(`- Repo: ${document.repo}`);
|
|
60
|
+
}
|
|
61
|
+
if (document.repositoriesScanned !== undefined) {
|
|
62
|
+
lines.push(`- Repositories scanned: ${document.repositoriesScanned}`);
|
|
63
|
+
}
|
|
64
|
+
lines.push("", "## Summary", "", `- Commits: ${document.digest.totalCommits}`, `- Active days: ${document.digest.activeDays}`, `- Current streak: ${formatDays(document.digest.currentStreak)}`, `- Longest streak: ${formatDays(document.digest.longestStreak)}`);
|
|
65
|
+
if (document.digest.mostActiveDay) {
|
|
66
|
+
lines.push(`- Most active day: ${document.digest.mostActiveDay.name}`);
|
|
67
|
+
}
|
|
68
|
+
appendMarkdownCountSection(lines, "Top authors", document.digest.commitsByAuthor);
|
|
69
|
+
appendMarkdownCountSection(lines, "Top repos", document.digest.commitsByRepo);
|
|
70
|
+
appendMarkdownListSection(lines, "Recent highlights", document.digest.recentHighlights);
|
|
71
|
+
const activeRepos = document.repositories?.filter((repo) => repo.commits.length > 0) ?? [];
|
|
72
|
+
if (activeRepos.length > 0) {
|
|
73
|
+
lines.push("", "## Repo details");
|
|
74
|
+
for (const repo of activeRepos) {
|
|
75
|
+
lines.push("", `### ${repo.name}`, "", `- Commits: ${repo.commits.length}`);
|
|
76
|
+
for (const commit of repo.commits.slice(0, 5)) {
|
|
77
|
+
lines.push(`- ${commit.date} ${commit.hash} ${commit.subject} (${commit.author})`);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return `${lines.join("\n")}\n`;
|
|
82
|
+
}
|
|
83
|
+
export async function saveReport(options) {
|
|
84
|
+
const outputPath = resolveOutputPath(options.outputPath, options.format, options.filenamePrefix);
|
|
85
|
+
await mkdir(resolve(outputPath, ".."), { recursive: true });
|
|
86
|
+
await writeFile(outputPath, options.content, "utf8");
|
|
87
|
+
return outputPath;
|
|
88
|
+
}
|
|
89
|
+
export function isReportFormat(format) {
|
|
90
|
+
return format === "text" || format === "markdown" || format === "json";
|
|
91
|
+
}
|
|
92
|
+
function resolveOutputPath(outputPath, format, filenamePrefix = "commitlens-report") {
|
|
93
|
+
if (typeof outputPath === "string") {
|
|
94
|
+
return resolve(outputPath);
|
|
95
|
+
}
|
|
96
|
+
const extension = format === "markdown" ? "md" : format;
|
|
97
|
+
const timestamp = new Date().toISOString().replace(/[:.]/g, "-");
|
|
98
|
+
return resolve(join("commitlens-reports", `${filenamePrefix}-${timestamp}.${extension}`));
|
|
99
|
+
}
|
|
100
|
+
function appendCountSection(lines, title, items, theme) {
|
|
101
|
+
if (items.length === 0) {
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
lines.push("", formatSectionTitle(title, theme));
|
|
105
|
+
for (const item of items.slice(0, 5)) {
|
|
106
|
+
lines.push(formatStatLine(item.name, `${item.count}`, theme));
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
function appendListSection(lines, title, items, theme) {
|
|
110
|
+
if (items.length === 0) {
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
lines.push("", formatSectionTitle(title, theme));
|
|
114
|
+
for (const item of items) {
|
|
115
|
+
lines.push(` ${theme.dim("-")} ${item}`);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
function formatMetaLine(label, value, theme) {
|
|
119
|
+
return `${theme.dim(`${label}:`.padEnd(23))} ${value}`;
|
|
120
|
+
}
|
|
121
|
+
function formatSectionTitle(title, theme) {
|
|
122
|
+
return theme.section(title);
|
|
123
|
+
}
|
|
124
|
+
function formatStatLine(label, value, theme = createTheme(true)) {
|
|
125
|
+
return ` ${theme.dim(label.padEnd(21))} ${value}`;
|
|
126
|
+
}
|
|
127
|
+
function appendMarkdownCountSection(lines, title, items) {
|
|
128
|
+
if (items.length === 0) {
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
lines.push("", `## ${title}`, "");
|
|
132
|
+
for (const item of items.slice(0, 5)) {
|
|
133
|
+
lines.push(`- ${item.name}: ${item.count}`);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
function appendMarkdownListSection(lines, title, items) {
|
|
137
|
+
if (items.length === 0) {
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
lines.push("", `## ${title}`, "");
|
|
141
|
+
for (const item of items) {
|
|
142
|
+
lines.push(`- ${item}`);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
function formatDays(days) {
|
|
146
|
+
return days === 1 ? "1 day" : `${days} days`;
|
|
147
|
+
}
|
|
148
|
+
function formatNumber(value) {
|
|
149
|
+
return new Intl.NumberFormat("en-US").format(value);
|
|
150
|
+
}
|
|
151
|
+
function pluralize(count, singular) {
|
|
152
|
+
if (count === 1) {
|
|
153
|
+
return singular;
|
|
154
|
+
}
|
|
155
|
+
return `${singular}s`;
|
|
156
|
+
}
|
|
157
|
+
function withoutInactiveRepositories(document) {
|
|
158
|
+
if (!document.repositories) {
|
|
159
|
+
return document;
|
|
160
|
+
}
|
|
161
|
+
return {
|
|
162
|
+
...document,
|
|
163
|
+
repositories: document.repositories.filter((repo) => repo.commits.length > 0),
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
function createTheme(color) {
|
|
167
|
+
if (!color) {
|
|
168
|
+
return {
|
|
169
|
+
accent: identity,
|
|
170
|
+
bold: identity,
|
|
171
|
+
dim: identity,
|
|
172
|
+
section: identity,
|
|
173
|
+
title: identity,
|
|
174
|
+
warning: identity,
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
return {
|
|
178
|
+
accent: chalk.cyan,
|
|
179
|
+
bold: chalk.bold,
|
|
180
|
+
dim: chalk.dim,
|
|
181
|
+
section: chalk.bold.cyan,
|
|
182
|
+
title: chalk.bold.cyan,
|
|
183
|
+
warning: chalk.yellow,
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
function identity(value) {
|
|
187
|
+
return value;
|
|
188
|
+
}
|
|
189
|
+
//# sourceMappingURL=format.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.js","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"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"}
|
package/dist/git.d.ts
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { type CommitSummary } from "./parser.js";
|
|
2
|
+
export declare function getGitRoot(cwd?: string): Promise<string>;
|
|
3
|
+
export declare function isGitRepository(cwd?: string): Promise<boolean>;
|
|
4
|
+
export type GetCommitsOptions = {
|
|
5
|
+
cwd?: string;
|
|
6
|
+
since?: string;
|
|
7
|
+
limit?: number;
|
|
8
|
+
author?: string;
|
|
9
|
+
excludeMerges?: boolean;
|
|
10
|
+
excludeBots?: boolean;
|
|
11
|
+
};
|
|
12
|
+
export type RepositoryActivity = {
|
|
13
|
+
root: string;
|
|
14
|
+
name: string;
|
|
15
|
+
commits: CommitSummary[];
|
|
16
|
+
};
|
|
17
|
+
export declare function getCommits(options?: GetCommitsOptions): Promise<CommitSummary[]>;
|
|
18
|
+
export declare function buildGitLogArgs(options?: GetCommitsOptions): string[];
|
|
19
|
+
export declare function findGitRepositories(scanRoot: string): Promise<string[]>;
|
|
20
|
+
export declare function getRepositoryActivity(roots: string[], options?: Omit<GetCommitsOptions, "cwd">): Promise<RepositoryActivity[]>;
|
|
21
|
+
export declare function getCurrentGitUser(cwd?: string): Promise<string | undefined>;
|
|
22
|
+
export declare function filterCommits(commits: CommitSummary[], options?: Pick<GetCommitsOptions, "excludeBots">): CommitSummary[];
|
|
23
|
+
//# sourceMappingURL=git.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../src/git.ts"],"names":[],"mappings":"AAGA,OAAO,EAAe,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAE9D,wBAAsB,UAAU,CAAC,GAAG,SAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAGrE;AAED,wBAAsB,eAAe,CAAC,GAAG,SAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,CAO3E;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,aAAa,EAAE,CAAC;CAC1B,CAAC;AAEF,wBAAsB,UAAU,CAAC,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAc1F;AAED,wBAAgB,eAAe,CAAC,OAAO,GAAE,iBAAsB,GAAG,MAAM,EAAE,CAwBzE;AAYD,wBAAsB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAI7E;AAED,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,MAAM,EAAE,EACf,OAAO,GAAE,IAAI,CAAC,iBAAiB,EAAE,KAAK,CAAM,GAC3C,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAU/B;AAaD,wBAAsB,iBAAiB,CAAC,GAAG,SAAgB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAQxF;AAED,wBAAgB,aAAa,CAC3B,OAAO,EAAE,aAAa,EAAE,EACxB,OAAO,GAAE,IAAI,CAAC,iBAAiB,EAAE,aAAa,CAAM,GACnD,aAAa,EAAE,CAMjB"}
|