diff --git a/index.js b/index.js index b9c8a80e2f3a75fbe49d238be0d5305dc2b90ebb..0aebd5bd6ef865fd1086d5c05cc749ff1e83aadc 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 fbfc3ce82757b56223f56a8c365b0a192f1fa9a9..467624940781b401ca9588cb27a53b0646a9ff18 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 375432a5d7034b078c6039b7adf60d5baacdec8b..613aede754ce87f2c265556a2464542fd304760f 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 02fd54ad7d7197f95a8dac8e34e7bf618a14cab2..0f56cccdb86b8364a90dc82b3f6514130bafe3ac 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 c7c44608eb1582638f0b82c6655215cdd9c43e95..064cdb7e2271286130aee7fb5ff3727049fcfc1f 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 504a8b7be2c4f2427f76114d3defa42418c0de0c..c5680543a5043e1f639590bf00e02a2d17225fe1 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 22faaff2bc36c50c2e8b08ed8362bb326e9a6362..2e6d621514bb04c423b0947307a5efe4dcc457ac 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); + }) } -