]> git.r.bdr.sh - rbdr/blog/blobdiff - lib/generators/html.js
Use new generators
[rbdr/blog] / lib / generators / html.js
diff --git a/lib/generators/html.js b/lib/generators/html.js
new file mode 100644 (file)
index 0000000..ba2676c
--- /dev/null
@@ -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.<Blog.tPost>} 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);
+};
+