@@ -17,16 +17,25 @@ var filter = require('./filter')
17
17
18
18
module . exports = function generate ( name , src , dest , done ) {
19
19
var opts = getOptions ( name , src )
20
- Metalsmith ( path . join ( src , 'template' ) )
20
+ var metalsmith = Metalsmith ( path . join ( src , 'template' ) )
21
+ var data = metalsmith . metadata ( )
22
+ // avoid handlebars escaping HTML
23
+ data . noEscape = true
24
+ metalsmith
21
25
. use ( askQuestions ( opts . schema ) )
22
26
. use ( filterFiles ( opts . filters ) )
23
27
. use ( renderTemplateFiles )
24
28
. clean ( false )
25
29
. source ( '.' ) // start from template root instead of `./src` which is Metalsmith's default for `source`
26
30
. destination ( dest )
27
31
. build ( function ( err ) {
28
- if ( err ) throw err
29
- done ( )
32
+ done ( err )
33
+ if ( opts . completeMessage ) {
34
+ formatMessage ( opts . completeMessage , data , function ( err , message ) {
35
+ if ( err ) return done ( err )
36
+ console . log ( message )
37
+ } )
38
+ }
30
39
} )
31
40
}
32
41
@@ -67,7 +76,6 @@ function filterFiles (filters) {
67
76
function renderTemplateFiles ( files , metalsmith , done ) {
68
77
var keys = Object . keys ( files )
69
78
var metalsmithMetadata = metalsmith . metadata ( )
70
- metalsmithMetadata . noEscape = true
71
79
async . each ( keys , function ( file , next ) {
72
80
var str = files [ file ] . contents . toString ( )
73
81
// do not attempt to render files that do not have mustaches
@@ -81,3 +89,20 @@ function renderTemplateFiles (files, metalsmith, done) {
81
89
} )
82
90
} , done )
83
91
}
92
+
93
+ /**
94
+ * Format complete message.
95
+ *
96
+ * @param {String } message
97
+ * @param {Object } data
98
+ * @param {Function } cb
99
+ */
100
+
101
+ function formatMessage ( message , data , cb ) {
102
+ render ( message , data , function ( err , res ) {
103
+ if ( err ) return cb ( err )
104
+ cb ( null , '\n' + res . split ( / \r ? \n / g) . map ( function ( line ) {
105
+ return ' ' + line
106
+ } ) . join ( '\n' ) )
107
+ } )
108
+ }
0 commit comments