From 8ff2df09619d46dec7eb745cb790f2adac940bd9 Mon Sep 17 00:00:00 2001 From: Burak Yigit Kaya Date: Fri, 24 Sep 2021 10:03:47 +0300 Subject: [PATCH 1/2] fix(changelog): Make auto changelog titles level 3 In #291 we used level 2 headers for subsections in the auto generated changelogs. This made them collide with the level 2 version headers, causing our GitHub target to not pick up the automatically generated changelog. It is also semantically incorrect. This patch fixes the issue, introduces constants to determine these levels, and adds a helper function that utilizes these constants. --- CHANGELOG.md | 12 ++++++------ src/utils/__tests__/changelog.test.ts | 16 +++++++-------- src/utils/changelog.ts | 28 +++++++++++++++++++++++---- 3 files changed, 38 insertions(+), 18 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 063734640..620505c61 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,31 +2,31 @@ ## 0.25.0 -## Automated Changelog Generation +### Automated Changelog Generation We now automatically generate changelog entries for the `auto` changelog policy where none provided, instead of saying "No documented changes". The commits/PRs are grouped by their associated GitHub milestones and the milestone title and description are used in the changelog along with a list of related commits/PRs. Any unaccounted changes are grouped under the "Various improvements and fixes" section. PRs: #291, #290, #289, #287, #285 -## Added Maven Target (ongoing) +### Added Maven Target (ongoing) Added the long-awaited Maven target, full with Android support. PRs: #271, #275, #276, #270, #258 -## Added symbol-collector Target +### Added symbol-collector Target Added target for our very own [symbol-collector](https://github.com/getsentry/symbol-collector/) to collect and upload all native system symbols with Craft. PRs: #284, #277, #269, #268, #267, #266 -## Fixed Cocoapods Support +### Fixed Cocoapods Support -Turns out our Cocoapods target was a bit outdated and broken. We have fixed it in this release! 🥳 +Turns out our Cocoapods target was a bit outdated and broken. We have fixed it in this release! 🥳 PRs: #281, #282 -## Various fixes & improvements +### Various fixes & improvements - build: Drop Node 12 support, target Node 14 (#293) - build(deps): Bump tmpl from 1.0.4 to 1.0.5 (#292) diff --git a/src/utils/__tests__/changelog.test.ts b/src/utils/__tests__/changelog.test.ts index 71eb8c1ee..e2d2a835b 100644 --- a/src/utils/__tests__/changelog.test.ts +++ b/src/utils/__tests__/changelog.test.ts @@ -318,7 +318,7 @@ describe('generateChangesetFromGit', () => { makeCommitResponse([]); const changes = await generateChangesetFromGit(dummyGit, '1.0.0'); expect(changes).toMatchInlineSnapshot(` - "## Various fixes & improvements + "### Various fixes & improvements - Upgraded the kernel (abcdef12)" `); @@ -336,7 +336,7 @@ describe('generateChangesetFromGit', () => { makeCommitResponse([{ hash: 'abcdef1234567890' }]); const changes = await generateChangesetFromGit(dummyGit, '1.0.0'); expect(changes).toMatchInlineSnapshot(` - "## Various fixes & improvements + "### Various fixes & improvements - Upgraded the kernel (abcdef12)" `); @@ -357,7 +357,7 @@ describe('generateChangesetFromGit', () => { ]); const changes = await generateChangesetFromGit(dummyGit, '1.0.0'); expect(changes).toMatchInlineSnapshot(` - "## Various fixes & improvements + "### Various fixes & improvements - Upgraded the kernel (#123)" `); @@ -374,7 +374,7 @@ describe('generateChangesetFromGit', () => { makeCommitResponse([{ hash: 'abcdef1234567890', pr: '123' }]); const changes = await generateChangesetFromGit(dummyGit, '1.0.0'); expect(changes).toMatchInlineSnapshot(` - "## Various fixes & improvements + "### Various fixes & improvements - Upgraded the kernel (#123)" `); @@ -410,7 +410,7 @@ describe('generateChangesetFromGit', () => { ]); const changes = await generateChangesetFromGit(dummyGit, '1.0.0'); expect(changes).toMatchInlineSnapshot(` - "## Various fixes & improvements + "### Various fixes & improvements - Upgraded the kernel (abcdef12) - Upgraded the manifold (#123) @@ -495,19 +495,19 @@ describe('generateChangesetFromGit', () => { }); const changes = await generateChangesetFromGit(dummyGit, '1.0.0'); expect(changes).toMatchInlineSnapshot(` - "## Better drivetrain + "### Better drivetrain We have upgraded the drivetrain for a smoother and more performant driving experience. Enjoy! PRs: #123, #456 - ## Better driver experience (ongoing) + ### Better driver experience (ongoing) We are working on making your driving experience more pleasant and safer. PRs: #789, #900 - ## Various fixes & improvements + ### Various fixes & improvements - Upgraded the kernel (abcdef12) - Fix the clacking sound on gear changes (#950)" diff --git a/src/utils/changelog.ts b/src/utils/changelog.ts index ee73a5a53..629e73571 100644 --- a/src/utils/changelog.ts +++ b/src/utils/changelog.ts @@ -12,7 +12,14 @@ import { getVersion } from './version'; export const DEFAULT_CHANGELOG_PATH = 'CHANGELOG.md'; export const DEFAULT_UNRELEASED_TITLE = 'Unreleased'; const DEFAULT_CHANGESET_BODY = '- No documented changes.'; +const VERSION_HEADER_LEVEL = 2; +const SUBSECTION_HEADER_LEVEL = VERSION_HEADER_LEVEL + 1; +// Ensure subsections are nested under version headers otherwise we won't be +// able to find them and put on GitHub releases. +if (SUBSECTION_HEADER_LEVEL <= VERSION_HEADER_LEVEL) { + throw new Error('Subsection headers should nest under version headers!'); +} /** * A single changeset with name and description */ @@ -32,6 +39,11 @@ export interface ChangesetLoc { padding: string; } +function markdownHeader(level: number, text: string): string { + const prefix = new Array(level + 1).join('#'); + return `${prefix} ${text}`; +} + /** * Extracts a specific changeset from a markdown document * @@ -70,7 +82,10 @@ function locateChangeset( markdown: string, predicate: (match: string) => boolean ): ChangesetLoc | null { - const HEADER_REGEX = /^( *)(?:## +([^\n]+?) *(?:##)?|([^\n]+)\n *(?:-){2,}) *(?:\n+|$)/gm; + const HEADER_REGEX = new RegExp( + `^( *)(?:#{${VERSION_HEADER_LEVEL}} +([^\\n]+?) *(?:#{${VERSION_HEADER_LEVEL}})?|([^\\n]+)\\n *(?:-){2,}) *(?:\\n+|$)`, + 'gm' + ); for ( let match = HEADER_REGEX.exec(markdown); @@ -171,7 +186,7 @@ export function prependChangeset( const underline = new Array(changeset.name.length + 1).join('-'); header = `${changeset.name}\n${underline}`; } else { - header = `## ${changeset.name}`; + header = markdownHeader(VERSION_HEADER_LEVEL, changeset.name); } const newSection = `${padding}${header}\n\n${body.replace( /^/gm, @@ -269,7 +284,10 @@ export async function generateChangesetFromGit( } changelogSections.push( - `## ${milestone.title}${milestone.state === 'OPEN' ? ' (ongoing)' : ''}` + markdownHeader( + SUBSECTION_HEADER_LEVEL, + `${milestone.title}${milestone.state === 'OPEN' ? ' (ongoing)' : ''}` + ) ); changelogSections.push(milestone.description); changelogSections.push( @@ -278,7 +296,9 @@ export async function generateChangesetFromGit( } if (leftovers.length > 0) { - changelogSections.push(`## Various fixes & improvements`); + changelogSections.push( + markdownHeader(SUBSECTION_HEADER_LEVEL, 'Various fixes & improvements') + ); changelogSections.push(leftovers.map(formatCommit).join('\n')); } From a924a377908939191b2ee9abdf6ceaa83a685ad6 Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Fri, 24 Sep 2021 07:11:51 +0000 Subject: [PATCH 2/2] ref: Lint fixes --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 620505c61..ef38d64be 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -37,7 +37,7 @@ PRs: #281, #282 - build(deps): Bump path-parse from 1.0.6 to 1.0.7 (#274) - build(deps-dev): Bump tar from 4.4.8 to 4.4.15 (#273) - docs: Consistent code samples for shell (e84f693f) -- docs: Mention release/** branches on README (#263) +- docs: Mention release/\*\* branches on README (#263) ## 0.24.4