]> git.r.bdr.sh - rbdr/blog/blobdiff - lib/blog.js
Remove one more v
[rbdr/blog] / lib / blog.js
index 483577ff3f147b30b02d818970d6ceb38e7ef514..f31234b526f7289f767bbadb04bb47134c0d9798 100644 (file)
@@ -1,11 +1,11 @@
 'use strict';
 
 const Fs = require('fs');
-const Markdown = require('markdown');
 const Mustache = require('mustache');
 const Ncp = require('ncp');
 const Path = require('path');
 const Rimraf = require('rimraf');
+const Showdown = require('showdown');
 const Util = require('util');
 
 const internals = {
@@ -112,20 +112,34 @@ module.exports = class Blog {
 
     for (let i = 0; i < this.maxPosts; ++i) {
       const sourcePath = Path.join(this.postsDirectory, `${i}`);
-      const assetsSource = Path.join(sourcePath, internals.kAssetsDirectoryName);
-      const postContentPath = await this._findBlogContent(sourcePath);
 
-      internals.debuglog(`Copying ${assetsSource} to ${assetsTarget}`);
-      await internals.ncp(assetsSource, assetsTarget);
+      try {
+        await internals.fs.access(this.postsDirectory);
+
+        const assetsSource = Path.join(sourcePath, internals.kAssetsDirectoryName);
+        const postContentPath = await this._findBlogContent(sourcePath);
+
+        internals.debuglog(`Copying ${assetsSource} to ${assetsTarget}`);
+        await internals.ncp(assetsSource, assetsTarget);
 
-      internals.debuglog(`Reading ${postContentPath}`);
-      const postContent = await internals.fs.readFile(postContentPath, { encoding: 'utf8' });
+        internals.debuglog(`Reading ${postContentPath}`);
+        const postContent = await internals.fs.readFile(postContentPath, { encoding: 'utf8' });
 
-      internals.debuglog('Parsing markdown');
-      posts.push({
-        html: Markdown.markdown.toHTML(postContent),
-        id: i + 1
-      });
+        internals.debuglog('Parsing markdown');
+        const parser = new Showdown.Converter();
+        posts.push({
+          html: parser.makeHtml(postContent),
+          id: i + 1
+        });
+      }
+      catch (error) {
+        if (error.code === internals.kFileNotFoundError) {
+          internals.debuglog(`Skipping ${i}`);
+          continue;
+        }
+
+        throw error;
+      }
     }
 
     internals.debuglog(`Reading ${indexLocation}`);