X-Git-Url: https://git.r.bdr.sh/rbdr/blog/blobdiff_plain/6f72ad0f8b1d147a3d2e27db539a0e17ca2ac917..67fdfa7cc2e1690657cd0c7190373847de25311a:/lib/generators/html.js diff --git a/lib/generators/html.js b/lib/generators/html.js new file mode 100644 index 0000000..ba2676c --- /dev/null +++ b/lib/generators/html.js @@ -0,0 +1,35 @@ +'use strict'; + +const { template } = 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)({ posts }); + await writeFile(indexTarget, indexHtml); +}; +