UNPKG

1.08 kBJavaScriptView Raw
1'use strict';
2
3var ejs = require('ejs');
4var fs = require('fs').promises;
5var {isBinaryFile} = require('isbinaryfile');
6const {render} = require('../util');
7
8async function renderFile(filename, context, tplSettings) {
9 let result;
10
11 if (await isBinaryFile(filename)) {
12 result = await fs.readFile(filename);
13 } else {
14 result = await ejs.renderFile(filename, context, tplSettings);
15 }
16
17 return result;
18}
19
20module.exports = async function (from, to, context, tplSettings, options) {
21 context = context || {};
22 tplSettings = tplSettings || {};
23
24 await this.copyAsync(
25 from,
26 to,
27 {
28 processDestinationPath: path => path.replace(/.ejs$/, ''),
29 ...options,
30 processFile: async function (filename) {
31 return renderFile(filename, context, tplSettings);
32 },
33 process: function (contents, filename) {
34 return render(contents, context, {
35 // Setting filename by default allow including partials.
36 filename: filename,
37 ...tplSettings
38 });
39 }
40 },
41 context,
42 tplSettings
43 );
44};