UNPKG

@sap/cds-dk

Version:

Command line client and development toolkit for the SAP Cloud Application Programming Model

47 lines (38 loc) 1.27 kB
const Mustache = require('mustache') const cds = require('../cds') const { copy, read, write, exists, readdir, path, isdir, mkdirp } = cds.utils async function renderAndCopy(from, into = '.', replacements = {}, overwrite = cds.cli.options.force) { const srcRoot = path.resolve(from) const destRoot = path.resolve(cds.root, into) async function walk(src, dest) { if (isdir(src)) { await mkdirp(dest) const entries = await readdir(src) return Promise.all(entries.map(name => { const renderedName = Mustache.render(name, replacements) return walk(path.join(src, name), path.join(dest, renderedName)) })) } const extension = path.extname(src) if (extension === '.hbs') { const destFile = dest.replace(/\.hbs$/, '') if (overwrite || !exists(destFile)) { const content = await render(src, replacements) await write(destFile, content, { spaces: 2 }) } return } if (overwrite || !exists(dest)) { await copy(src, dest) } } return walk(srcRoot, destRoot) } async function render(templatePath, values = {}) { const content = await read(templatePath, 'utf-8') return Mustache.render(content, values) } module.exports = { render, renderAndCopy }