import Dot from 'dot'; import { readFile, writeFile } from 'fs/promises'; import { join } from 'path'; import { debuglog } from '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 */ export default 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 = Dot.template(indexTemplate, { ...Dot.templateSettings, strip: false })({ posts }); await writeFile(indexTarget, indexHtml); }