meka
Version:
Marionette Scaffolding
52 lines (40 loc) • 1.17 kB
JavaScript
var fs = require('fs')
var debug = require('debug')('meka:process')
var plate = require('../lib/plate.js')
var cats = require('concat-stream')
var thru = require('through')
var async = require('async')
module.exports = function(opts, done) {
var hash = opts.hash
var tags = opts.tags
var dest = opts.dest
var tdir = opts.template_dir
async.each(tags, process, function(err) {
if(err) debug('error processing ', tags, hash, dest, err)
else debug('processing complete', err)
done(err)
})
function process(tag, cb) {
var rs = fs.createReadStream(tdir + tag, { encoding: 'utf8' })
var ws = fs.createWriteStream(fmt_dest(tag), { encoding: 'utf8' })
var cs = cats(function(data) {
var painted = plate(opts.hash, data)
debug('painted', opts.tag)
ws.on('end', function() {
cb(null)
})
ws.on('error', function(err) {
cb(err)
})
ws.write(painted)
})
rs.on('error', function(err) {
cb(err)
})
rs.pipe(cs)
}
function fmt_dest(tag) {
var file = ('index.js' == tag) ? tag : hash.name + '-' + tag
return dest + '/' + file
}
}