Add contributors title and statistics to the changelog script

Puts the contributors under a "Contributors" title on a single comma
separated line, and prints commits, merged pull requests, files changed
and line additions and deletions since the last release after them.

The compare API lists at most 300 files, so the file and line counts
come from the diff media type of the same comparison instead. To fetch
it, githubFetch now lets the caller override the Accept header and
checks the Content-Type against it.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
bbassieandClaude Opus 5 committed 2026-09-13 16:29:38 +00:00
1 parent a28e2bf9f6
commit 0f4671afd0
2 files changed
+74 -5

No files matched your search

+17 -2
View File
@@ -11,8 +11,8 @@ export async function githubFetch(
init = {
...init,
headers: {
...init.headers as Record<string, string> ?? {},
"Accept": "application/vnd.github+json",
...init.headers as Record<string, string> ?? {},
}
};
if (process.env.GH_TOKEN) {
@@ -24,7 +24,9 @@ export async function githubFetch(
console.log(response.headers);
throw new Error(`GitHub replied with ${response.status} ${response.statusText}: ${await response.text()}`);
}
if (!response.headers.get("Content-Type")?.startsWith("application/json")) {
const accept = init.headers!["Accept"];
const contentType = accept === "application/vnd.github+json" ? "application/json" : accept;
if (!response.headers.get("Content-Type")?.startsWith(contentType)) {
throw new Error(
`GitHub replied with ${response.status} ${response.statusText}: ${response.headers.get("Content-Type")}`
);
@@ -41,6 +43,15 @@ export async function githubFetchJson<T>(
return await response.json();
}
export async function githubFetchText(
path: string,
query: Record<string, string> = {},
init: RequestInit & { headers?: Record<string, string> } = {},
): Promise<string> {
const response = await githubFetch(path, query, init);
return await response.text();
}
export async function githubFetchJsonPaginated<T>(
path: string,
query: Record<string, string> = {},
@@ -117,6 +128,10 @@ export interface Release {
updated_at?: string | null,
}
export interface Comparison {
total_commits: number,
}
export interface Commit {
sha: string,
commit: {