fix(bogus): this is crap

This commit is contained in:
2025-07-12 17:09:25 -05:00
parent 2397fc2004
commit 8044547488

View File

@@ -56,7 +56,7 @@ const result = spawnSync(
"CHANGELOG.md", "CHANGELOG.md",
"-s", "-s",
"-r", "-r",
"1", "1", // This ensures only the latest release is considered for generation
], ],
{ stdio: "inherit", shell: true } { stdio: "inherit", shell: true }
); );
@@ -66,24 +66,58 @@ if (result.status !== 0) {
process.exit(1); process.exit(1);
} }
const getLatestChangelog = () => // Corrected function to get the latest changelog entry from CHANGELOG.md
new Promise((resolve, reject) => { const getLatestChangelog = async () => {
const changelogStream = conventionalChangelog({ releaseCount: 1 }); try {
const changelogContent = await fs.readFile(
path.resolve(__dirname, "../CHANGELOG.md"),
"utf8"
);
let changelog = ""; // Regex to capture the content of the latest release.
changelogStream.on("data", (chunk) => { // It looks for a line starting with "## [" (the start of a release heading)
changelog += chunk.toString(); // and captures everything until the next "## [" or the end of the file.
}); // The `m` flag makes `^` and `$` match start/end of lines, not just string.
// The `s` flag allows `.` to match newlines.
const latestEntryMatch = changelogContent.match(
/^(## \[.*?\] - .*?\n[\s\S]*?)(?=^## \[|\Z)/m
);
changelogStream.on("end", () => { if (latestEntryMatch && latestEntryMatch[1]) {
resolve(changelog); // Split the matched content into lines
}); const lines = latestEntryMatch[1].split("\n");
// Find the index of the first non-heading line
// The first line is usually the heading (e.g., "## [1.0.0] - 2024-01-01")
// So we start checking from the second line (index 1).
let firstContentLineIndex = -1;
for (let i = 1; i < lines.length; i++) {
if (lines[i].trim() !== "") {
// Check for non-empty and non-whitespace lines
firstContentLineIndex = i;
break;
}
}
if (firstContentLineIndex !== -1) {
// Join the lines from the first content line onwards and trim any leading/trailing whitespace
return lines.slice(firstContentLineIndex).join("\n").trim();
}
return ""; // No content found after heading
} else {
console.warn(
"Could not find the latest changelog entry in CHANGELOG.md. Ensure it's formatted correctly."
);
return "No changelog notes available."; // Default message if not found
}
} catch (err) {
console.error("Error reading or parsing CHANGELOG.md:", err);
throw err;
}
};
changelogStream.on("error", (err) => {
reject(err);
});
});
const releaseNotes = await getLatestChangelog(); const releaseNotes = await getLatestChangelog();
// Step 3: Create or update Gitea release // Step 3: Create or update Gitea release
const createOrUpdateRelease = async () => { const createOrUpdateRelease = async () => {
const tagName = `v${version}`; const tagName = `v${version}`;