'use strict'; const { template, templateSettings } = require('dot'); const { readFile, writeFile } = require('fs/promises'); const { join } = require('path'); const { debuglog } = require('util'); const internals = { debuglog: debuglog('blog'), kIndexName: 'index.html' }; /** * Generates the blog index page * * @name HTMLGenerator * @param {string} source the source directory * @param {string} target the target directory * @param {Array.} posts the list of posts */ module.exports = async function HTMLGenerator(source, target, posts) { internals.debuglog('Generating HTML'); const indexTarget = join(target, internals.kIndexName); const indexLocation = join(source, internals.kIndexName); internals.debuglog(`Reading ${indexLocation}`); const indexTemplate = await readFile(indexLocation, { encoding: 'utf8' }); internals.debuglog('Writing HTML'); const indexHtml = template(indexTemplate, { ...templateSettings, strip: false })({ posts }); await writeFile(indexTarget, indexHtml); };