UNPKG

apeman-tmpl

Version:
58 lines (52 loc) 1.74 kB
/** * Render templates. * @memberof module:apeman-tmpl/lib/templating * @function renderTemplate */ "use strict"; const coz = require('coz'), async = require('async'), path = require('path'), mkdirp = require('mkdirp'), RenderLogger = require('../logging/render_logger'), getTemplates = require('./get_templates'); /** @lends renderTemplate */ function renderTemplate(apemanfile, pattern, options, callback) { let tmpls = getTemplates(apemanfile, pattern), childTmpls = getTemplates.childTmpls(apemanfile, pattern); let logger = new RenderLogger({}); let verbose = options.verbose; if (verbose) { logger.logTmpls(tmpls); } async.series([ (callback) => { coz.render(tmpls, { prefix: 'apeman-tmpl', verbose: verbose }, callback); }, (callback) => { let here = process.cwd(); async.eachSeries(Object.keys(childTmpls || {}), (childName, callback) => { let $child = apemanfile.$children[childName], $cwd = path.resolve($child.$cwd || here); let tmpls = childTmpls[childName]; mkdirp.sync($cwd); process.chdir($cwd); logger.trace("Working directory:", $cwd); coz.render(tmpls, { prefix: 'apeman-tmpl', verbose: verbose }, (err) => { process.chdir(here); callback(err); }); }, (err) => { process.chdir(here); callback(err); }); } ], callback); } module.exports = renderTemplate;