@@ -19,14 +19,24 @@ const stdinLineByLine = createInterface(process.stdin)[Symbol.asyncIterator]();
1919
2020const changelog = await readFile ( CHANGELOG_PATH , 'utf-8' ) ;
2121const commitListingStart = changelog . indexOf ( '\n### Commits\n' ) ;
22- const commitListingEnd = changelog . indexOf ( '\n\n<a' , commitListingStart ) ;
23- const commitList = changelog . slice ( commitListingStart , commitListingEnd === - 1 ? undefined : commitListingEnd + 1 )
24- // Checking for semverness is too expansive, it is left as a exercice for human reviewers.
22+ let commitList ;
23+ if ( commitListingStart === - 1 ) {
24+ // We're preparing a semver-major release.
25+ commitList = changelog . replace ( / ( ^ .+ \n # # # S e m v e r - M a j o r | \n # # # S e m v e r - ( M i n o r | P a t c h ) ) C o m m i t s \n / gs, '' )
26+ . replaceAll ( '**(SEMVER-MAJOR)** ' , '' ) ;
27+ } else {
28+ const commitListingEnd = changelog . indexOf ( '\n\n<a' , commitListingStart ) ;
29+ assert . notStrictEqual ( commitListingEnd , - 1 ) ;
30+ commitList = changelog . slice ( commitListingStart , commitListingEnd + 1 ) ;
31+ }
32+
33+ // Normalize for consistent comparison
34+ commitList = commitList
2535 . replaceAll ( '**(SEMVER-MINOR)** ' , '' )
26- // Correct Markdown escaping is validated by the linter, getting rid of it here helps.
2736 . replaceAll ( '\\' , '' ) ;
2837
29- let expectedNumberOfCommitsLeft = commitList . match ( / \n \* \[ / g) . length ;
38+ let expectedNumberOfCommitsLeft = commitList . match ( / \n \* \[ / g) ?. length ?? 0 ;
39+
3040for await ( const line of stdinLineByLine ) {
3141 const { smallSha, title, prURL } = JSON . parse ( line ) ;
3242
0 commit comments