Skip to content

Commit 749870c

Browse files
committed
support custom complete message
1 parent 1ee27c2 commit 749870c

File tree

5 files changed

+32
-7
lines changed

5 files changed

+32
-7
lines changed

bin/vue-init

+1-1
Original file line numberDiff line numberDiff line change
@@ -152,8 +152,8 @@ function downloadAndGenerate (template) {
152152
spinner.stop()
153153
if (err) logger.fatal(err)
154154
generate(name, tmp, to, function (err) {
155-
if (err) logger.fatal(err)
156155
rm(tmp)
156+
if (err) logger.fatal(err)
157157
console.log()
158158
logger.success('Generated "%s".', name)
159159
})

lib/eval.js

+2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
var chalk = require('chalk')
2+
13
/**
24
* Evaluate an expression in meta.json in the context of
35
* prompt answers data.

lib/filter.js

-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
var match = require('minimatch')
2-
var chalk = require('chalk')
32
var evaluate = require('./eval')
43

54
module.exports = function (files, filters, data, done) {

lib/generate.js

+29-4
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,25 @@ var filter = require('./filter')
1717

1818
module.exports = function generate (name, src, dest, done) {
1919
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
2125
.use(askQuestions(opts.schema))
2226
.use(filterFiles(opts.filters))
2327
.use(renderTemplateFiles)
2428
.clean(false)
2529
.source('.') // start from template root instead of `./src` which is Metalsmith's default for `source`
2630
.destination(dest)
2731
.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+
}
3039
})
3140
}
3241

@@ -67,7 +76,6 @@ function filterFiles (filters) {
6776
function renderTemplateFiles (files, metalsmith, done) {
6877
var keys = Object.keys(files)
6978
var metalsmithMetadata = metalsmith.metadata()
70-
metalsmithMetadata.noEscape = true
7179
async.each(keys, function (file, next) {
7280
var str = files[file].contents.toString()
7381
// do not attempt to render files that do not have mustaches
@@ -81,3 +89,20 @@ function renderTemplateFiles (files, metalsmith, done) {
8189
})
8290
}, done)
8391
}
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+
}

lib/logger.js

-1
Original file line numberDiff line numberDiff line change
@@ -41,5 +41,4 @@ exports.fatal = function (message) {
4141
exports.success = function () {
4242
var msg = format.apply(format, arguments)
4343
console.log(chalk.white(prefix), sep, msg)
44-
process.exit(0)
4544
}

0 commit comments

Comments
 (0)