diff options
| author | Ruben Beltran del Rio <git@r.bdr.sh> | 2024-03-09 14:17:34 +0100 |
|---|---|---|
| committer | Ruben Beltran del Rio <git@r.bdr.sh> | 2024-03-09 14:17:34 +0100 |
| commit | 172f4c8807d44ebe38c7f227b7fdc2d6a9dbe323 (patch) | |
| tree | b880761cf254fbc668cea0d577d5331a28af67cc /lib/generators | |
| parent | 36a4680d18de012e2e5c732f9db161dafa884344 (diff) | |
Allow sync up and down
Diffstat (limited to 'lib/generators')
| -rw-r--r-- | lib/generators/html.js | 35 | ||||
| -rw-r--r-- | lib/generators/rss.js | 51 | ||||
| -rw-r--r-- | lib/generators/static.js | 48 | ||||
| -rw-r--r-- | lib/generators/txt.js | 35 |
4 files changed, 0 insertions, 169 deletions
diff --git a/lib/generators/html.js b/lib/generators/html.js deleted file mode 100644 index 2004696..0000000 --- a/lib/generators/html.js +++ /dev/null @@ -1,35 +0,0 @@ -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.<Blog.tPost>} 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); -} diff --git a/lib/generators/rss.js b/lib/generators/rss.js deleted file mode 100644 index c47ba03..0000000 --- a/lib/generators/rss.js +++ /dev/null @@ -1,51 +0,0 @@ -import Dot from 'dot'; -import { encodeXML } from 'entities'; -import { readFile, writeFile } from 'fs/promises'; -import { join } from 'path'; -import { debuglog } from 'util'; - -const internals = { - debuglog: debuglog('blog'), - - kFeedName: 'feed.xml', - - extractTitle(postText) { - - return postText.trim() - .split('\n')[0] - .replace('#', '') - .replace(/&/g, '&') - .trim(); - } -}; - -/** - * Generates an RSS feed XML file - * - * @name RSSGenerator - * @param {string} source the source directory - * @param {string} target the target directory - * @param {Array.<Blog.tPost>} posts the list of posts - */ -export default async function RSSGenerator(source, target, posts) { - - internals.debuglog('Generating RSS'); - const feedTarget = join(target, internals.kFeedName); - const feedLocation = join(source, internals.kFeedName); - - internals.debuglog(`Reading ${feedLocation}`); - const feedTemplate = await readFile(feedLocation, { encoding: 'utf8' }); - - internals.debuglog('Writing RSS'); - posts = posts.map((post) => ({ - ...post, - createdOn: (new Date(post.createdOn)).toUTCString(), - title: internals.extractTitle(post.raw), - html: encodeXML(post.html) - })); - const feedXml = Dot.template(feedTemplate, { - ...Dot.templateSettings, - strip: false - })({ posts }); - await writeFile(feedTarget, feedXml); -} diff --git a/lib/generators/static.js b/lib/generators/static.js deleted file mode 100644 index 45f5a04..0000000 --- a/lib/generators/static.js +++ /dev/null @@ -1,48 +0,0 @@ -import { access, cp, readdir } from 'fs/promises'; -import { constants } from 'fs'; -import { join } from 'path'; -import { debuglog } from 'util'; -import { kFileNotFoundError } from '../constants.js'; - -const internals = { - debuglog: debuglog('blog'), - kAssetsDirectoryName: 'assets' -}; - -/** - * Generates the static assets required for the blog - * - * @name StaticGenerator - * @param {string} source the source directory - * @param {string} target the target directory - * @param {Array.<Blog.tPost>} posts the list of posts - */ -export default async function StaticGenerator(source, target, _) { - - try { - await access(source, constants.R_OK); - - const entries = await readdir(source, { withFileTypes: true }); - for (const entry of entries) { - const sourceAsset = join(source, entry.name); - const targetAsset = join(target, entry.name); - - internals.debuglog(`Copying ${sourceAsset} to ${targetAsset}`); - - if (entry.isDirectory()) { - await cp(sourceAsset, targetAsset, { recursive: true }); - } - else { - await cp(sourceAsset, targetAsset); - } - } - } - catch (error) { - if (error.code === kFileNotFoundError) { - internals.debuglog(`No static directory found in ${source}`); - return; - } - - throw error; - } -} diff --git a/lib/generators/txt.js b/lib/generators/txt.js deleted file mode 100644 index c3d7778..0000000 --- a/lib/generators/txt.js +++ /dev/null @@ -1,35 +0,0 @@ -import Dot from 'dot'; -import { readFile, writeFile } from 'fs/promises'; -import { join } from 'path'; -import { debuglog } from '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 - */ -export default 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 = Dot.template(textTemplate, { - ...Dot.templateSettings, - strip: false - })({ posts }); - await writeFile(textTarget, text); -} |