| var changelog = require( "changelogplease" ); |
| var gittags = require( "git-tags" ).get( function( error, tags ) { |
| if ( error ) { |
| throw error |
| } |
| console.log( tags[ 1 ] + ".." + tags[ 0 ] ); |
| var exclude = [ "Merge", "Whitespace", "Fixup", "Cleanup", "Formatting", "Ignore" ]; |
| changelog( { |
| ticketUrl: "https://github.com/hammerjs/hammer.js/issues/{id}", |
| commitUrl: "https://github.com/hammerjs/hammerjs/commit/{id}", |
| sort: false, |
| repo: "./", |
| committish: tags[ 1 ] + ".." + tags[ 0 ] |
| }, function( error, log ) { |
| if ( error ) { |
| throw error; |
| } |
| log = parseLog( log ); |
| console.log( log ); |
| } ); |
| function parseLog( log ) { |
| var lines = log.split( "\n" ); |
| var newLog = []; |
| var log = []; |
| var currentComponent; |
| |
| |
| lines.shift(); |
| lines.forEach( function( line ) { |
| var newLine = parseLine( line ); |
| if ( newLine ) { |
| log.push( line ); |
| } |
| } ); |
| var log = log.join( "\n" ); |
| return log.replace( /\*/g, "-" ).replace( /__TICKETREF__,/g, "" ); |
| } |
| function parseLine( line ) { |
| var parts = getParts( line ); |
| |
| if ( exclude.indexOf( parts.component ) > -1 ) { |
| return false; |
| } |
| return parts; |
| } |
| function getParts( line ) { |
| var parts = line.split( ":" ); |
| var component = ""; |
| var message; |
| var commits = line.match( /\{\{([A-Za-z0-9 ]){0,99}\}\}/ ) |
| |
| if ( parts.length > 1 && parts[ 0 ].length <= 20 ) { |
| component = parts[ 0 ]; |
| parts.shift(); |
| message = parts.join( ":" ); |
| } else { |
| parts = line.split( " " ); |
| component = parts[ 1 ]; |
| parts.shift(); |
| message = parts.join( " " ); |
| } |
| |
| if ( component ) { |
| component = component.replace( /\* |,/, "" ); |
| } |
| return { |
| component: component, |
| message: message |
| }; |
| } |
| } ); |