astro-ghostcms/.pnpm-store/v3/files/b4/47f2f3f3f3d771b9ce5ef99255a...

70 lines
1.8 KiB
Plaintext
Raw Normal View History

2024-02-14 14:10:47 +00:00
/* eslint-disable import/no-extraneous-dependencies */
import startCase from "lodash.startcase";
import { getCommitsThatAddFiles } from "@changesets/git";
import { ComprehensiveRelease, NewChangeset } from "@changesets/types";
import { RelevantChangesets } from "../types";
async function getReleaseLine(changeset: NewChangeset, cwd: string) {
const [firstLine, ...futureLines] = changeset.summary
.split("\n")
.map((l) => l.trimRight());
const [commitThatAddsFile] = await getCommitsThatAddFiles(
[`.changeset/${changeset.id}.md`],
{ cwd }
);
return `- [${commitThatAddsFile}] ${firstLine}\n${futureLines
.map((l) => ` ${l}`)
.join("\n")}`;
}
async function getReleaseLines(
obj: RelevantChangesets,
type: keyof RelevantChangesets,
cwd: string
) {
const releaseLines = obj[type].map((changeset) =>
getReleaseLine(changeset, cwd)
);
if (!releaseLines.length) return "";
const resolvedLines = await Promise.all(releaseLines);
return `### ${startCase(type)} Changes\n\n${resolvedLines.join("")}`;
}
export default async function defaultChangelogGetter(
release: ComprehensiveRelease,
relevantChangesets: RelevantChangesets,
options: { cwd: string }
) {
let { cwd } = options;
// First, we construct the release lines, summaries of changesets that caused us to be released
let majorReleaseLines = await getReleaseLines(
relevantChangesets,
"major",
cwd
);
let minorReleaseLines = await getReleaseLines(
relevantChangesets,
"minor",
cwd
);
let patchReleaseLines = await getReleaseLines(
relevantChangesets,
"patch",
cwd
);
return [
`## ${release.newVersion}`,
majorReleaseLines,
minorReleaseLines,
patchReleaseLines,
]
.filter((line) => line)
.join("\n");
}