]> git.r.bdr.sh - rbdr/blog/blobdiff - lib/generators/txt.js
Add TXT support
[rbdr/blog] / lib / generators / txt.js
diff --git a/lib/generators/txt.js b/lib/generators/txt.js
new file mode 100644 (file)
index 0000000..af5ec9c
--- /dev/null
@@ -0,0 +1,38 @@
+'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'),
+
+  kTextName: 'index.txt'
+};
+
+/**
+ * Generates a TXT version of the blog
+ *
+ * @name TXTGenerator
+ * @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 TXTGenerator(source, target, posts) {
+
+  internals.debuglog('Generating TXT');
+  const textTarget = join(target, internals.kTextName);
+  const textLocation = join(source, internals.kTextName);
+
+  internals.debuglog(`Reading ${textLocation}`);
+  const textTemplate = await readFile(textLocation, { encoding: 'utf8' });
+
+  internals.debuglog('Writing TXT');
+  const text = template(textTemplate, {
+    ...templateSettings,
+    strip: false
+  })({ posts });
+  await writeFile(textTarget, text);
+};
+