From e3bdeb4b1c65235eaa910e991ddf3e57ed7715f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Sko=C5=99epa?= <jakub@skorepa.info> Date: Mon, 7 Mar 2016 22:46:19 +0100 Subject: [PATCH] Promisify tags --- index.js | 7 ++++-- package.json | 12 +++++------ sitegin/config.js | 1 + sitegin/pipeline.js | 2 +- sitegin/print.js | 25 +++++++++++++++------ sitegin/sitegin.js | 1 + sitegin/{legacy => }/tags.js | 42 ++++++++++++++++++++---------------- 7 files changed, 57 insertions(+), 33 deletions(-) rename sitegin/{legacy => }/tags.js (78%) diff --git a/index.js b/index.js index b9c8a80e..0aebd5bd 100755 --- a/index.js +++ b/index.js @@ -1,7 +1,8 @@ #!/usr/bin/env node +var moment = require('moment'); require('./sitegin/sitegin')({ - watch: true + watch: false }) .then(function onLoad(jobs) { var sass = require('node-sass'); @@ -11,6 +12,7 @@ require('./sitegin/sitegin')({ var runAgain = false; function run() { + var startTime = moment(); runAgain = false; if(isRunning) { console.log("Generator is still running. Queing another run after it finishes.") @@ -23,11 +25,12 @@ require('./sitegin/sitegin')({ jobs.run('pipeline',jobs) .then(function() { isRunning = false; - console.log("Generator finished") + console.log("Generator finished in",moment().diff(startTime,'seconds'),'seconds') if(runAgain) run(); }) .catch(function(e) { isRunning = false; + console.log("Generator crashed in",moment().diff(startTime,'seconds'),'seconds') if(runAgain) run(); console.log(e.stack) }); diff --git a/package.json b/package.json index fbfc3ce8..46762494 100644 --- a/package.json +++ b/package.json @@ -7,23 +7,23 @@ "test": "./node_modules/istanbul/lib/cli.js cover ./node_modules/mocha/bin/_mocha -- sitegin/test/ --recursive -R spec -u exports -t 60000" }, "author": "", - "license": "BSD", + "license": "UNSPECIFIED", "dependencies": { "browser-sync": "^2.11.1", - "chokidar": "^1.4.2", + "chokidar": "^1.4.3", "highlight.js": "^9.2.0", "jsesc": "^1.0.0", "marked": "^0.3.5", "mkdirp": "^0.5.1", - "moment": "^2.11.2", + "moment": "^2.12.0", "node-fs-extra": "^0.8.1", "node-sass": "^3.4.2", - "nodegit": "^0.11.1", - "nodegit-kit": "^0.8.0", + "nodegit": "^0.11.7", + "nodegit-kit": "^0.8.1", "nunjucks": "^2.3.0", "nunjucks-date-filter": "^0.1.1", "syntax-error": "^1.1.5", - "toml": "~2.3.0", + "toml": "^2.3.0", "toml-js": "0.0.8", "walk": "^2.3.9" }, diff --git a/sitegin/config.js b/sitegin/config.js index 375432a5..613aede7 100644 --- a/sitegin/config.js +++ b/sitegin/config.js @@ -17,6 +17,7 @@ module.exports = function() { builddir: builddir, watch: watch, articlesLocation: 'content/articles', + linksPerPage: 6 } }) } diff --git a/sitegin/pipeline.js b/sitegin/pipeline.js index 02fd54ad..0f56cccd 100644 --- a/sitegin/pipeline.js +++ b/sitegin/pipeline.js @@ -3,5 +3,5 @@ */ module.exports = function(jobs) { - return jobs.runSequence('config','readFiles','parseHugo','gitInfo','markdown','print'); + return jobs.runSequence('config','readFiles','parseHugo','gitInfo','markdown','tags','print'); } diff --git a/sitegin/print.js b/sitegin/print.js index c7c44608..064cdb7e 100644 --- a/sitegin/print.js +++ b/sitegin/print.js @@ -1,11 +1,24 @@ var util = require('util') module.exports = function(a) { - var pages = a.pages - var page0 = pages[0] - //page0.content = '...' - a.pages = [page0] - console.log(JSON.stringify(a,null,2)) - a.pages = pages + var save = {}; + var props = []; + var shortenProp = function(prop) { + if(a[prop]) { + save[prop] = a[prop]; a[prop] = [a[prop][0]]; + props.push(prop); + } + } + + shortenProp('pages') + shortenProp('tags') + shortenProp('redirects') + + console.log(util.inspect(a,null,2)) + + props.forEach(function(prop){ + a[prop] = save[prop]; + }); + return Promise.resolve(a) } diff --git a/sitegin/sitegin.js b/sitegin/sitegin.js index 504a8b7b..c5680543 100644 --- a/sitegin/sitegin.js +++ b/sitegin/sitegin.js @@ -10,6 +10,7 @@ module.exports = function(config) { ['print', './print'], ['readFiles', './readFiles'], ['toURL', './toURL'], + ['tags', './tags'], ['pipeline','./pipeline'] ) diff --git a/sitegin/legacy/tags.js b/sitegin/tags.js similarity index 78% rename from sitegin/legacy/tags.js rename to sitegin/tags.js index 22faaff2..2e6d6215 100644 --- a/sitegin/legacy/tags.js +++ b/sitegin/tags.js @@ -1,16 +1,21 @@ -var Page = require("./Page.js").Page; var moment = require('moment'); +var jobs = require('./jobs'); -module.exports = function() { - var tr = this; - tr.fancyname = "transformer tags"; - tr.linksPerPage = 6; - tr.pre = function(cb, list) { +var toURL = function(url) { + return jobs.run('toURL', url); +} + +module.exports = function(obj) { + return new Promise(function(resolve, reject) { var tags = new Array(); var tagPages = {}; - list.forEach(function(article) { + obj.pages.forEach(function(article) { if(article.metadata.tags) article.metadata.tags.forEach(function(tag) { + tag = { + text: tag, + url: toURL(tag) + } if(tags.map(function(e) { return e.url; }).indexOf(tag.url) < 0) tags.push(tag) if(tagPages[tag.url] == undefined) tagPages[tag.url] = new Array(); @@ -18,12 +23,15 @@ module.exports = function() { }) }); + obj.tags = []; + obj.redirects = []; + var generateTagPages = function(file, pageList) { - var p = new Page(); + var p = {}; p.type = "redirect"; p.file = file; p.content = file+"/1"; - list.addPage(p); + obj.redirects.push(p); pageList.sort(function (a, b) { var rhs = a.metadata.date.creation; @@ -43,10 +51,10 @@ module.exports = function() { p++; if(tagPage !== undefined) { tagPage.metadata.nexturl = file+"/"+p; - list.addPage(tagPage); + obj.tags.push(tagPage); tagPageList.push(tagPage); } - tagPage = new Page(); + tagPage = {metadata: {}}; if(firstpage === undefined) firstpage = tagPage; lastpage = tagPage; @@ -57,7 +65,7 @@ module.exports = function() { tagPage.metadata.prevurl = prevurl; tagPage.metadata.thispage = tagPage; tagPage.metadata.pagenumber = p; - + tagPage.content = new Array(); if(prevpage !== undefined) prevpage.metadata.nextpage = tagPage; @@ -67,20 +75,18 @@ module.exports = function() { tagPage.content.push(page); c++; - c %= tr.linksPerPage; + c %= obj.config.linksPerPage; }); - list.addPage(tagPage); + obj.tags.push(tagPage); tagPageList.push(tagPage); tagPageList.forEach(function(tagPage) { tagPage.metadata.lastpage = lastpage; }); } - tags.forEach(function(tag) { generateTagPages("tag/"+tag.url, tagPages[tag.url]) }) - cb(); - } + resolve(obj); + }) } - -- GitLab