From f48f290f0b736e4fdcab1296e5e05bb967655628 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Sko=C5=99epa?= <jakub@skorepa.info> Date: Mon, 7 Mar 2016 20:33:39 +0100 Subject: [PATCH] Add pipeline.js and tranform gitInfo to new format --- index.js | 15 ++++++++- sitegin/gitInfo.js | 77 +++++++++++++++++++------------------------- sitegin/parseHugo.js | 1 + sitegin/pipeline.js | 7 ++++ sitegin/sitegin.js | 13 ++------ 5 files changed, 59 insertions(+), 54 deletions(-) create mode 100644 sitegin/pipeline.js diff --git a/index.js b/index.js index e13a009..8d611ec 100755 --- a/index.js +++ b/index.js @@ -7,8 +7,21 @@ require('./sitegin/sitegin')({ var sass = require('node-sass'); var fs = require('fs'); + var isRunning = false; + var runAgain = false; + function run() { - jobs.runSequence('config','readFiles','parseHugo','print') + runAgain = false; + if(isRunning) { + runAgain = true; + return; + } + isRunning = true; + jobs.run('pipeline',jobs) + .then(function() { + isRunning = false; + if(runAgain) run(); + }) .catch(e => console.log(e.stack)); } diff --git a/sitegin/gitInfo.js b/sitegin/gitInfo.js index bb0dc37..076fce5 100644 --- a/sitegin/gitInfo.js +++ b/sitegin/gitInfo.js @@ -1,4 +1,8 @@ -// Add git commit author and date to metadata +/* + * Add date: {creation, modification, modified} and author: {name, email} + * to metadata if not already present + */ + var nodegit = require('nodegit'); var git = require('nodegit-kit'); var path = require('path'); @@ -73,51 +77,38 @@ var getFilesHistory = function() { }); } -module.exports = function() { - var tr = this; - tr.fancyname = "transformer git"; - - tr.pre = function(cb, articleList) { - getFilesHistory() - .then((filesHistory) => { - var todo = articleList.length; - articleList.forEach(function(article) { - var file = path.relative(pathToRepo, article.origFile); - var commits = filesHistory[file]; - if(commits !== undefined) { - commits.sort(function(a,b){ - return b.date - a.date; - }); - var newestCommit = commits[0]; - var oldestCommit = commits[commits.length-1]; +module.exports = function(obj) { + return getFilesHistory() + .then((filesHistory) => { + obj.pages.forEach(function(article) { + var file = path.relative(pathToRepo, article.filename); + var commits = filesHistory[file]; + if(commits !== undefined) { + commits.sort(function(a,b){ + return b.date - a.date; + }); + var newestCommit = commits[0]; + var oldestCommit = commits[commits.length-1]; - if(article.metadata.date == undefined) - article.metadata.date = {}; + if(article.metadata.date == undefined) + article.metadata.date = {}; - if(article.metadata.date.creation == undefined) - article.metadata.date.creation = oldestCommit.date; + if(article.metadata.date.creation == undefined) + article.metadata.date.creation = oldestCommit.date; - article.metadata.date.modification = newestCommit.date; - article.metadata.date.modified = (newestCommit !== oldestCommit); + article.metadata.date.modification = newestCommit.date; + article.metadata.date.modified = (newestCommit !== oldestCommit); - if(article.metadata.author === undefined) - article.metadata.author = {} - if(article.metadata.author.name == undefined) - article.metadata.author.name = oldestCommit.author.name - if(article.metadata.author.email == undefined) - article.metadata.author.email = oldestCommit.author.email + if(article.metadata.author === undefined) + article.metadata.author = {} + if(article.metadata.author.name == undefined) + article.metadata.author.name = oldestCommit.author.name + if(article.metadata.author.email == undefined) + article.metadata.author.email = oldestCommit.author.email - article.commits = commits; - } - - todo--; - if(todo == 0) cb(); - }); - }) - .catch(function(err) {console.log(err.stack);}); - } - - tr.forEachPage = function(article, cb) { - cb(); - } + article.commits = commits; + } + }); + return obj; + }) } diff --git a/sitegin/parseHugo.js b/sitegin/parseHugo.js index e0cd9a9..7b53e1e 100644 --- a/sitegin/parseHugo.js +++ b/sitegin/parseHugo.js @@ -18,6 +18,7 @@ var readPageWorker = function(content, articleName) { } var obj = {}; obj.content = content.substring(fm_end+4); + obj.filename = articleName; try { obj.metadata = toml.parse(content.substring(0,fm_end-1)+"\n"); } catch(e) { diff --git a/sitegin/pipeline.js b/sitegin/pipeline.js new file mode 100644 index 0000000..0137a6f --- /dev/null +++ b/sitegin/pipeline.js @@ -0,0 +1,7 @@ +/* + * This jobs just runs all job in the right order + */ + +module.exports = function(jobs) { + return jobs.runSequence('config','readFiles','parseHugo','gitInfo','print'); +} diff --git a/sitegin/sitegin.js b/sitegin/sitegin.js index 0991f4c..eb24ec6 100644 --- a/sitegin/sitegin.js +++ b/sitegin/sitegin.js @@ -4,19 +4,12 @@ module.exports = function(config) { return jobs.registerMultiple( config, ['config', './config'], - ['readFiles', './readFiles'], + ['gitInfo', './gitInfo'], ['parseHugo', './parseHugo'], ['print', './print'], + ['readFiles', './readFiles'], - ['transformer-git', './transformer-git'], - ['output-console', './output-console'], - ['output-filesystem', './output-filesystem'], - ['transformer-basichtml', './transformer-basichtml'], - - ['transformer-markdown', './transformer-markdown'], - ['transformer-nunjucks', './transformer-nunjucks'], - ['transformer-urlizetags', './transformer-urlizetags'], - ['transformer-other', './transformer-other'] + ['pipeline','./pipeline'] ) .then(function() { return jobs; -- GitLab