From ce5272fcf17b617495f05de102cf39dc23aece95 Mon Sep 17 00:00:00 2001 From: IntegerLimit <103940576+IntegerLimit@users.noreply.github.com> Date: Sat, 21 Oct 2023 13:36:14 +1100 Subject: [PATCH] Changelog Improvements (#466) - [Add time zone to cutting edge changelog](https://github.com/Nomi-CEu/Nomi-CEu/commit/d29e9a9b33555f09d14b250b01b8735c7688020c) - [Make Multi Commits appear in reverse (oldest -> newest)](https://github.com/Nomi-CEu/Nomi-CEu/commit/4469ace03ca84dd6d6c1580d4b520d7022570f38) [COMBINE] commits = ["fbd1584e7baed4a3603e3c810066603185f1b230"] [COMBINE] [FIXUP] [[fixes]] sha = "2a0f5eab525c7f9b29ace0c003c95ef44160af05" newTitle = "Fix Workflows Pushing to Main (#465)" newBody = """ [COMBINE] commits = [\"fbd1584e7baed4a3603e3c810066603185f1b230\"] [COMBINE] """ [[fixes]] sha = "e2aac147e539f48b01e702a24fba8e6fa6666861" newTitle = "Fix Non Release Commit Workflow (#464)" newBody = """ [COMBINE] commits = [\"fbd1584e7baed4a3603e3c810066603185f1b230\"] [COMBINE] """ [[fixes]] sha = "7a6a147006dbc6fca439e6fc4c1bff8f3d4e1c9d" newTitle = "Fix Parsing Complex Bodies in GitHub Commits (#460)" newBody = """ [COMBINE] commits = [\"fbd1584e7baed4a3603e3c810066603185f1b230\"] [COMBINE] """ [FIXUP] --- tools/tasks/changelog/generateModChanges.ts | 4 +++ tools/tasks/changelog/pusher.ts | 28 +++++++++++++++++---- 2 files changed, 27 insertions(+), 5 deletions(-) diff --git a/tools/tasks/changelog/generateModChanges.ts b/tools/tasks/changelog/generateModChanges.ts index ccf7476..2108e3d 100644 --- a/tools/tasks/changelog/generateModChanges.ts +++ b/tools/tasks/changelog/generateModChanges.ts @@ -7,6 +7,7 @@ import mustache from "mustache"; import { defaultIndentation, modChangesAllocations, repoLink } from "./definitions"; import ChangelogData from "./changelogData"; import { SpecialChangelogFormatting } from "../../types/changelogTypes"; +import { sortCommitListReverse } from "./pusher"; /** * Mod Changes special formatting @@ -83,6 +84,9 @@ export default async function generateModChanges(data: ChangelogData): Promise${data.releaseType} (${date})`, ""); + // noinspection HtmlDeprecatedAttribute + data.builder.push(`

${data.releaseType} (${date})

`, ""); } else { // noinspection HtmlUnknownAttribute data.builder.push(`

${data.releaseType} ${data.to}

`, ""); + data.builder.push("{{{ CF_REDIRECT }}}", ""); } - data.builder.push("{{{ CF_REDIRECT }}}", ""); data.builder.push(`# Changes Since ${data.since}`, ""); // Push Sections of Changelog @@ -107,7 +108,7 @@ function pushCategory(category: Category) { * Sorts a list that contains commit data * @param list A list of type T that contains commit data * @param transform A function to turn each element of type T into an element of type Commit - * @param backup A backup sort, to call when either element does not have a commit object, or when the commit objects' times are the same. Optional, if not set, will just return 0 (equal). + * @param backup A backup sort, to call when either element does not have a commit object, or when the commit objects' times are the same. Optional, if not set, will just return 0 (equal) or will compare commit messages. */ function sortCommitList(list: T[], transform: (obj: T) => Commit | undefined, backup?: (a: T, b: T) => number) { list.sort((a, b): number => { @@ -128,6 +129,20 @@ function sortCommitList(list: T[], transform: (obj: T) => Commit | undefined, }); } +/** + * Sorts a commits list so that newest commits are on the bottom. + * @param list The commit list. + */ +export function sortCommitListReverse(list: Commit[]) { + list.sort((a, b) => { + const dateA = new Date(a.date); + const dateB = new Date(b.date); + + if (dateB.getTime() - dateA.getTime() !== 0) return dateA.getTime() - dateB.getTime(); + return a.message.localeCompare(b.message); + }); +} + /** * Formats a Changelog Message * @param changelogMessage The message to format. @@ -154,7 +169,10 @@ function formatChangelogMessage(changelogMessage: ChangelogMessage, subMessage = if (changelogMessage.commitObject && !subMessage) { if (data.combineList.has(changelogMessage.commitObject.hash)) { const commits = data.combineList.get(changelogMessage.commitObject.hash); - commits.unshift(changelogMessage.commitObject); + commits.push(changelogMessage.commitObject); + + // Sort original array so newest commits appear at the end instead of start of commit string + sortCommitListReverse(commits); const formattedCommits: string[] = []; const authors: string[] = [];