Skip to content

Commit 6c64208

Browse files
committed
build: handle empty releases in namespace packages and include section comments
1 parent b44db7e commit 6c64208

File tree

2 files changed

+40
-33
lines changed

2 files changed

+40
-33
lines changed

lib/node_modules/@stdlib/_tools/changelog/generate/lib/breaking_changes.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ var STDLIB_GITHUB_URL = 'https://github.com/stdlib-js/stdlib/commit';
5454
* // returns '- [`abcdef1`](https://github.com/stdlib-js/stdlib/commit/abcdef1234567890): beep'
5555
*/
5656
function formatBreakingChange( note ) {
57-
var parts = note.text.split( /\n/g );
57+
var parts = note.text.split( '\n' );
5858
var hash = trim( note.hash );
5959
var out = '- [`'+hash.substring( 0, 7 )+'`]('+STDLIB_GITHUB_URL+'/'+hash+'): '+parts[ 0 ];
6060
if ( parts.length > 1 ) {

lib/node_modules/@stdlib/_tools/changelog/generate/lib/main.js

+39-32
Original file line numberDiff line numberDiff line change
@@ -318,22 +318,26 @@ function generate( pkg, releaseType ) {
318318
if ( isNamespacePkg ) {
319319
str += releaseSectionStart( nextVersion );
320320
str += '## ' + ( nextVersion || 'Unreleased' ) + ' (' + formatDate() + ')\n\n';
321-
bySubpackage = groupBySubPackage( commits.unreleased, pkg );
322-
pkgNames = objectKeys( bySubpackage ).sort();
323-
str += sectionStart( 'packages' );
324-
str += heading( 'Packages', 3 );
325-
for ( i = 0; i < pkgNames.length; i++ ) {
326-
name = pkgNames[ i ];
327-
unreleased = releaseSummary( bySubpackage[ name ], true, true );
328-
if ( unreleased ) {
329-
str += packageSummaryWrapper( pkg, '', name, unreleased );
321+
if ( commits.unreleased.length > 0 ) {
322+
bySubpackage = groupBySubPackage( commits.unreleased, pkg );
323+
pkgNames = objectKeys( bySubpackage ).sort();
324+
str += sectionStart( 'packages' );
325+
str += heading( 'Packages', 3 );
326+
for ( i = 0; i < pkgNames.length; i++ ) {
327+
name = pkgNames[ i ];
328+
unreleased = releaseSummary( bySubpackage[ name ], true, true );
329+
if ( unreleased ) {
330+
str += packageSummaryWrapper( pkg, '', name, unreleased );
331+
}
330332
}
333+
str += sectionEnd( 'packages' );
334+
str += breakingChanges( commits.unreleased );
335+
str += closedIssues( commits.unreleased );
336+
str += formatContributors( commits.unreleased );
337+
str += formatCommits( commits.unreleased );
338+
} else {
339+
str += PLACEHOLDER_SUMMARY;
331340
}
332-
str += sectionEnd( 'packages' );
333-
str += breakingChanges( commits.unreleased );
334-
str += closedIssues( commits.unreleased );
335-
str += formatContributors( commits.unreleased );
336-
str += formatCommits( commits.unreleased );
337341
str += sectionEnd( 'release' );
338342
} else {
339343
unreleased = releaseSummary( commits.unreleased );
@@ -347,27 +351,30 @@ function generate( pkg, releaseType ) {
347351
if ( isNamespacePkg ) {
348352
for ( i = releases.length-1; i >= 0; i-- ) {
349353
version = releases[ i ][ 0 ];
350-
releaseCommits = commits[ version ];
351-
if ( !releaseCommits ) {
352-
releaseCommits = [];
353-
}
354+
str += releaseSectionStart( version );
354355
str += '## ' + version + ' (' + formatDate( releases[ i ][ 1 ] ) + ')\n\n';
355-
bySubpackage = groupBySubPackage( releaseCommits, pkg );
356-
pkgNames = objectKeys( bySubpackage ).sort();
357-
str += sectionStart( 'packages' );
358-
str += heading( 'Packages', 3 );
359-
for ( j = 0; j < pkgNames.length; j++ ) {
360-
name = pkgNames[ j ];
361-
summary = releaseSummary( bySubpackage[ name ], true, true );
362-
if ( summary ) {
363-
str += packageSummaryWrapper( pkg, version, name, summary );
356+
releaseCommits = commits[ version ];
357+
if ( releaseCommits && releaseCommits.length > 0 ) {
358+
bySubpackage = groupBySubPackage( releaseCommits, pkg );
359+
pkgNames = objectKeys( bySubpackage ).sort();
360+
str += sectionStart( 'packages' );
361+
str += heading( 'Packages', 3 );
362+
for ( j = 0; j < pkgNames.length; j++ ) {
363+
name = pkgNames[ j ];
364+
summary = releaseSummary( bySubpackage[ name ], true, true );
365+
if ( summary ) {
366+
str += packageSummaryWrapper( pkg, version, name, summary );
367+
}
364368
}
369+
str += sectionEnd( 'packages' );
370+
str += breakingChanges( releaseCommits );
371+
str += closedIssues( releaseCommits );
372+
str += formatContributors( releaseCommits );
373+
str += formatCommits( releaseCommits );
374+
} else {
375+
str += PLACEHOLDER_SUMMARY;
365376
}
366-
str += sectionEnd( 'packages' );
367-
str += breakingChanges( releaseCommits );
368-
str += closedIssues( releaseCommits );
369-
str += formatContributors( releaseCommits );
370-
str += formatCommits( releaseCommits );
377+
str += sectionEnd( 'release' );
371378
}
372379
} else {
373380
for ( i = releases.length-1; i >= 0; i-- ) {

0 commit comments

Comments
 (0)