apeman-scff
Version:
Project scaffolding tool.
47 lines (42 loc) • 988 B
JavaScript
/**
* Apply a scaffold.
* @memberof module:apeman-scaffold/lib/scaffold
* @function applyScaffold
*/
const co = require('co')
const tmplconv = require('tmplconv')
const filemode = require('filemode')
/** @lends applyScaffold */
function applyScaffold (type, dest, asked, options = {}) {
return co(function * () {
yield new Promise((resolve) => {
if (type.before) {
type.before(resolve)
} else {
resolve(null)
}
})
let config = Object.assign({}, {}, asked)
yield tmplconv.render(type.tmpl, dest, {
prefix: type.prefix,
suffix: type.suffix,
pattern: type.pattern,
silent: options.silent,
clean: false,
once: false,
data: config
})
yield filemode(type.mode || {}, {
cwd: dest
})
yield new Promise((resolve) => {
if (type.after) {
type.after(resolve)
} else {
resolve(null)
}
})
})
}
module.exports = applyScaffold