@@ -145,13 +145,18 @@ const captureSimilarityExtrinsic = (currentCaptures, referenceCaptures) => {
145145 return result ;
146146} ;
147147
148- const writeCaptures = ( name , obj ) => {
148+ const writeResult = ( name , obj ) => {
149149 try {
150150 fs . mkdirSync ( comparePath , { recursive : true } ) ;
151151 } catch ( err ) {
152152 if ( err . code !== 'EEXIST' ) throw err ;
153153 }
154- fs . writeFileSync ( `${ comparePath } /${ name } .json` , compactStringify ( obj , { maxLength : 100 } ) , 'utf8' ) ;
154+
155+ if ( typeof obj === 'string' ) {
156+ fs . writeFileSync ( `${ comparePath } /${ name } .md` , obj , 'utf8' ) ;
157+ } else {
158+ fs . writeFileSync ( `${ comparePath } /${ name } .json` , compactStringify ( obj , { maxLength : 100 } ) , 'utf8' ) ;
159+ }
155160} ;
156161
157162const toMatchExtrinsics = {
@@ -242,34 +247,37 @@ const comparisonReport = (capturesDev, capturesBuild, buildVersion, save) => {
242247
243248 const overlapChange = ( totalOverlapDev / ( totalOverlapBuild || 1 ) ) - 1 ;
244249
245- if ( save ) {
246- writeCaptures ( 'examples-dev' , devIntrinsicsChanged ) ;
247- writeCaptures ( 'examples-build' , buildIntrinsicsChanged ) ;
248- }
249-
250- return [
250+ const report = ( breakEvery , format ) => [
251251 [ `Output comparison of ${ similarityEntries . length } ` ,
252- `examples against ${ color ( 'matter-js@' + buildVersion , colors . Yellow ) } build on last run`
252+ `examples against ${ format ( 'matter-js@' + buildVersion , colors . Yellow ) } build on last run`
253253 ] . join ( ' ' ) ,
254- `\n\n${ color ( 'Similarity' , colors . White ) } ` ,
255- `${ color ( toPercent ( similarityAvg ) , similarityAvg === 1 ? colors . Green : colors . Yellow ) } %` ,
256- `${ color ( 'Performance' , colors . White ) } ` ,
257- `${ color ( ( perfChange >= 0 ? '+' : '' ) + toPercent ( perfChange ) , perfChange >= 0 ? colors . Green : colors . Red ) } %` ,
258- `${ color ( 'Overlap' , colors . White ) } ` ,
259- `${ color ( ( overlapChange >= 0 ? '+' : '' ) + toPercent ( overlapChange ) , overlapChange > 0 ? colors . Red : colors . Green ) } %` ,
254+ `\n\n${ format ( 'Similarity' , colors . White ) } ` ,
255+ `${ format ( toPercent ( similarityAvg ) , similarityAvg === 1 ? colors . Green : colors . Yellow ) } %` ,
256+ `${ format ( 'Performance' , colors . White ) } ` ,
257+ `${ format ( ( perfChange >= 0 ? '+' : '' ) + toPercent ( perfChange ) , perfChange >= 0 ? colors . Green : colors . Red ) } %` ,
258+ `${ format ( 'Overlap' , colors . White ) } ` ,
259+ `${ format ( ( overlapChange >= 0 ? '+' : '' ) + toPercent ( overlapChange ) , overlapChange > 0 ? colors . Red : colors . Green ) } %` ,
260260 capturePerformance . reduce ( ( output , p , i ) => {
261261 output += `${ p . name } ` ;
262262 output += `${ similarityRatings ( similaritys [ p . name ] ) } ` ;
263263 output += `${ changeRatings ( capturesDev [ p . name ] . changedIntrinsics ) } ` ;
264- if ( i > 0 && i < capturePerformance . length && i % 5 === 0 ) {
264+ if ( i > 0 && i < capturePerformance . length && breakEvery > 0 && i % breakEvery === 0 ) {
265265 output += '\n' ;
266266 }
267267 return output ;
268268 } , '\n\n' ) ,
269269 `\nwhere · no change ● extrinsics changed ◆ intrinsics changed\n` ,
270- similarityAvg < 1 ? `\n${ color ( '▶' , colors . White ) } ${ color ( compareCommand + '=' + 120 + '#' + similarityEntries [ 0 ] [ 0 ] , colors . BrightCyan ) } ` : '' ,
271- intrinsicChangeCount > 0 ? `\n${ color ( '▶' , colors . White ) } ${ color ( ( save ? diffCommand : diffSaveCommand ) , colors . BrightCyan ) } ` : ''
270+ similarityAvg < 1 ? `\n${ format ( '▶' , colors . White ) } ${ format ( compareCommand + '=' + 120 + '#' + similarityEntries [ 0 ] [ 0 ] , colors . BrightCyan ) } ` : '' ,
271+ intrinsicChangeCount > 0 ? `\n${ format ( '▶' , colors . White ) } ${ format ( ( save ? diffCommand : diffSaveCommand ) , colors . BrightCyan ) } ` : ''
272272 ] . join ( ' ' ) ;
273+
274+ if ( save ) {
275+ writeResult ( 'examples-dev' , devIntrinsicsChanged ) ;
276+ writeResult ( 'examples-build' , buildIntrinsicsChanged ) ;
277+ writeResult ( 'examples-report' , report ( 5 , s => s ) ) ;
278+ }
279+
280+ return report ( 5 , color ) ;
273281} ;
274282
275283module . exports = {
0 commit comments