22
33var utils = require ( './utils' ) ;
44var githubInfo = require ( './github-info' ) ;
5+ var template = require ( './template' ) ;
56var Github = require ( 'github-api' ) ;
67var fs = require ( 'fs' ) ;
78var chalk = require ( 'chalk' ) ;
89var Promise = Promise || require ( 'es6-promise' ) . Promise ;
910var connectivity = require ( 'connectivity' ) ;
10- var ObjectAssign = require ( 'object-assign' ) ;
11+ var templateConfig = require ( './templates.json' ) ;
12+ var ObjectAssign = require ( 'deep-assign' ) ;
13+ var configFile = fs . existsSync ( process . cwd ( ) + '/.gren.json' ) ? require ( process . cwd ( ) + '/.gren.json' ) : { } ;
1114
1215var defaults = {
1316 tags : false ,
@@ -20,11 +23,12 @@ var defaults = {
2023 includeMessages : 'commits' , // || merges || all
2124 prerelease : false ,
2225 dateZero : new Date ( 0 ) ,
23- override : false
26+ override : false ,
27+ template : templateConfig
2428} ;
2529
2630/**
27- * Edit arelease from a given tag (in the options)
31+ * Edit a release from a given tag (in the options)
2832 *
2933 * @since 0.5.0
3034 * @private
@@ -289,8 +293,10 @@ function getLastTwoReleases(gren) {
289293 *
290294 * @return {string }
291295 */
292- function templateCommits ( message ) {
293- return '- ' + message ;
296+ function templateCommits ( gren , message ) {
297+ return template . generate ( {
298+ message : message
299+ } , gren . options . template . commit ) ;
294300}
295301
296302/**
@@ -303,11 +309,16 @@ function templateCommits(message) {
303309 *
304310 * @return {string }
305311 */
306- function templateLabels ( issue ) {
307- return issue . labels ? issue . labels . map ( function ( label ) {
308- return '[**' + label . name + '**] ' ;
309- } )
310- . join ( '' ) : '[closed]' ;
312+ function templateLabels ( gren , issue ) {
313+ if ( ! issue . labels . length ) {
314+ issue . labels . push ( { name : 'closed' } ) ;
315+ }
316+
317+ return issue . labels . map ( function ( label ) {
318+ return template . generate ( {
319+ label : label . name
320+ } , gren . options . template . issueInfo . label ) ;
321+ } ) . join ( '' ) ;
311322}
312323
313324/**
@@ -320,11 +331,14 @@ function templateLabels(issue) {
320331 *
321332 * @return {string }
322333 */
323- function templateBlock ( block ) {
334+ function templateBlock ( gren , block ) {
324335 var date = new Date ( block . date ) ;
336+ var releaseTemplate = template . generate ( {
337+ release : block . name ,
338+ date : utils . formatDate ( date )
339+ } , template . generate ( gren . options . template . releaseInfo , gren . options . template . release ) ) ;
325340
326- return '## ' + block . name + ' (' + utils . formatDate ( date ) + ')' + '\n\n' +
327- block . body ;
341+ return releaseTemplate + '\n\n' + block . body ;
328342}
329343
330344/**
@@ -337,8 +351,18 @@ function templateBlock(block) {
337351 *
338352 * @return {string }
339353 */
340- function templateIssue ( issue ) {
341- return '- ' + templateLabels ( issue ) + issue . title + ' [#' + issue . number + '](' + issue . html_url + ')' ;
354+ function templateIssue ( gren , issue ) {
355+ var issueTemplate = template . generate ( gren . options . template . issueInfo , gren . options . template . issue ) ;
356+ var nameTemplate = template . generate ( {
357+ name : issue . title
358+ } , gren . options . template . issueInfo . name ) ;
359+
360+ return template . generate ( {
361+ labels : templateLabels ( gren , issue ) ,
362+ name : nameTemplate ,
363+ text : '#' + issue . number ,
364+ url : issue . html_url
365+ } , issueTemplate ) ;
342366}
343367
344368/**
@@ -351,10 +375,10 @@ function templateIssue(issue) {
351375 *
352376 * @return {string }
353377 */
354- function templateChangelog ( blocks ) {
378+ function templateChangelog ( gren , blocks ) {
355379 return '# Changelog\n\n' +
356380 blocks
357- . map ( templateBlock )
381+ . map ( templateBlock . bind ( null , gren ) )
358382 . join ( '\n\n --- \n\n' ) ;
359383}
360384
@@ -405,7 +429,7 @@ function generateCommitsBody(gren, messages) {
405429
406430 return filterMap . commits ( message ) ;
407431 } )
408- . map ( templateCommits )
432+ . map ( templateCommits . bind ( null , gren ) )
409433 . join ( '\n' ) ;
410434}
411435
@@ -498,19 +522,19 @@ function getClosedIssues(gren, releaseRanges) {
498522
499523 return gren . issues . listIssues ( {
500524 state : 'closed' ,
501- since : releaseRanges [ 0 ] [ 1 ] . date
525+ since : releaseRanges [ releaseRanges . length - 1 ] [ 1 ] . date
502526 } )
503- . then ( function ( response ) {
504- loaded ( ) ;
527+ . then ( function ( response ) {
528+ loaded ( ) ;
505529
506- var filteredIssues = response . data . filter ( function ( issue ) {
507- return ! issue . pull_request ;
508- } ) ;
530+ var filteredIssues = response . data . filter ( function ( issue ) {
531+ return ! issue . pull_request ;
532+ } ) ;
509533
510- process . stdout . write ( filteredIssues . length + ' issues found\n' ) ;
534+ process . stdout . write ( filteredIssues . length + ' issues found\n' ) ;
511535
512- return filteredIssues ;
513- } ) ;
536+ return filteredIssues ;
537+ } ) ;
514538}
515539
516540/**
@@ -539,7 +563,7 @@ function getIssueBlocks(gren, releaseRanges) {
539563 Date . parse ( range [ 0 ] . date )
540564 ) ;
541565 } )
542- . map ( templateIssue ) ;
566+ . map ( templateIssue . bind ( null , gren ) ) ;
543567
544568 return {
545569 id : range [ 0 ] . id ,
@@ -564,7 +588,7 @@ function getIssueBlocks(gren, releaseRanges) {
564588 */
565589function sortReleasesByDate ( releaseDates ) {
566590 return releaseDates . sort ( function ( release1 , release2 ) {
567- return new Date ( release1 . date ) < new Date ( release2 . date ) ? 1 : - 1 ;
591+ return new Date ( release2 . date ) - new Date ( release1 . date ) ;
568592 } ) ;
569593}
570594
@@ -627,7 +651,7 @@ function generateReleaseDatesChangelogBody(gren) {
627651 return dataSource [ gren . options . dataSource ] ( gren , releaseRanges ) ;
628652 } )
629653 . then ( function ( blocks ) {
630- return templateChangelog ( blocks ) ;
654+ return templateChangelog ( gren , blocks ) ;
631655 } ) ;
632656}
633657
@@ -733,7 +757,8 @@ function hasNetwork() {
733757 * @constructor
734758 */
735759function GithubReleaseNotes ( options ) {
736- this . options = ObjectAssign ( { } , defaults , options || utils . getBashOptions ( process . argv ) ) ;
760+ this . options = ObjectAssign ( { } , defaults , configFile , options || utils . getBashOptions ( process . argv ) ) ;
761+ console . log ( this . options . template ) ;
737762 this . options . tags = this . options . tags && this . options . tags . split ( ',' ) ;
738763 this . repo = null ;
739764 this . issues = null ;
0 commit comments