@@ -86,7 +86,11 @@ export async function whatBroke(
8686 }
8787 prevVersion = version
8888
89- const release : Release = { version, date : new Date ( npmInfo . time [ version ] ) }
89+ const release : Release = {
90+ version,
91+ header : version ,
92+ date : new Date ( npmInfo . time [ version ] ) ,
93+ }
9094 releases . push ( release )
9195
9296 const { url } =
@@ -99,14 +103,28 @@ export async function whatBroke(
99103 const { owner , repo } = parseRepositoryUrl ( url )
100104
101105 try {
102- release . body = ( await octokit . repos . getReleaseByTag ( {
106+ const body = ( await octokit . repos . getReleaseByTag ( {
103107 owner,
104108 repo,
105109 tag : `v${ version } ` ,
106110 } ) ) . data . body
111+
112+ release . body = body
113+
114+ const parsed = parseChangelog ( body )
115+ for ( let v in parsed ) {
116+ if ( v === version ) {
117+ const { header , body } = parsed [ v ]
118+ release . header = header
119+ release . body = body
120+ break
121+ }
122+ }
107123 } catch ( error ) {
108124 const changelog = await getChangelog ( owner , repo )
109- if ( changelog [ version ] ) release . body = changelog [ version ] . body
125+ const { header , body } = changelog [ version ] || { }
126+ release . header = header
127+ release . body = body
110128 }
111129 if ( ! release . body ) {
112130 release . error = new Error (
@@ -143,8 +161,8 @@ if (!module.parent) {
143161 /* eslint-env node */
144162 whatBroke ( pkg , { fromVersion, toVersion, full } ) . then (
145163 ( changelog : Array < Release > ) => {
146- for ( const { version , body, error } of changelog ) {
147- process . stdout . write ( chalk . bold ( version ) + '\n\n' )
164+ for ( const { header , body, error } of changelog ) {
165+ process . stdout . write ( chalk . bold ( `# ${ header } ` ) + '\n\n' )
148166 if ( body ) process . stdout . write ( body + '\n\n' )
149167 if ( error ) {
150168 process . stdout . write ( `Failed to get changelog: ${ error . stack } \n\n` )
0 commit comments