From f46cea9642f82d6a5a2701e8817bdc4d0da61ab6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jakub=20Sko=C5=99epa?= <jakub@skorepa.info>
Date: Tue, 8 Mar 2016 01:34:05 +0100
Subject: [PATCH] Convert writeFiles job

---
 sitegin/legacy/writeFiles.js | 21 ---------------------
 sitegin/pipeline.js          |  1 +
 sitegin/sitegin.js           |  1 +
 sitegin/writeFiles.js        | 26 ++++++++++++++++++++++++++
 4 files changed, 28 insertions(+), 21 deletions(-)
 delete mode 100644 sitegin/legacy/writeFiles.js
 create mode 100644 sitegin/writeFiles.js

diff --git a/sitegin/legacy/writeFiles.js b/sitegin/legacy/writeFiles.js
deleted file mode 100644
index fe92cc50..00000000
--- a/sitegin/legacy/writeFiles.js
+++ /dev/null
@@ -1,21 +0,0 @@
-
-var fs = require('fs');
-var path = require('path');
-var mkdirp = require('mkdirp');
-var builddir = "build";
-if(process.argv[2] !== "compileonly") builddir = "build-debug";
-
-module.exports = function() {
-  var out = this;
-  out.fancyname = "output filesystem";
-  out.forEachPage = function(article, cb) {
-    mkdirp(path.dirname(builddir+'/'+article.file+"/index.html"), () => {
-      var file = builddir+'/'+article.file+"/index.html";
-      fs.writeFile(file, article.content, function(err){
-        if(err) throw err;
-        cb();
-      });
-    });
-  }
-}
-
diff --git a/sitegin/pipeline.js b/sitegin/pipeline.js
index 2c2efaef..b1efcffa 100644
--- a/sitegin/pipeline.js
+++ b/sitegin/pipeline.js
@@ -11,6 +11,7 @@ module.exports = function(jobs) {
     'markdown',
     'tags',
     'theme',
+    'writeFiles',
     'print'
   );
 }
diff --git a/sitegin/sitegin.js b/sitegin/sitegin.js
index ac5d3df6..bf5a0e51 100644
--- a/sitegin/sitegin.js
+++ b/sitegin/sitegin.js
@@ -13,6 +13,7 @@ module.exports = function(config) {
     ['tags', './tags'],
     ['nunjucks', './nunjucks'],
     ['theme', './theme'],
+    ['writeFiles', './writeFiles'],
 
     ['pipeline','./pipeline']
   )
diff --git a/sitegin/writeFiles.js b/sitegin/writeFiles.js
new file mode 100644
index 00000000..04a17fd0
--- /dev/null
+++ b/sitegin/writeFiles.js
@@ -0,0 +1,26 @@
+
+var fs = require('fs');
+var path = require('path');
+var mkdirp = require('mkdirp');
+
+module.exports = function(obj) {
+  return new Promise(function(resolve,reject) {
+    var builddir = obj.config.builddir;
+    var todo = 0;
+
+    var writeFile = function(article) {
+      var filename = path.join(builddir,article.file,"index.html");
+      mkdirp(path.dirname(filename), function() {
+        fs.writeFile(filename, article.content, function(err) {
+          if(err) reject(err);
+          todo--;
+          if(todo <= 0) resolve(obj);
+        });
+      });
+    }
+    obj.pages.forEach(function(o) { writeFile(o); })
+    obj.redirects.forEach(function(o) { writeFile(o); })
+    obj.tags.forEach(function(o) { writeFile(o); })
+    if(todo <= 0) resolve(obj);
+  })
+}
-- 
GitLab