Skip to content
Snippets Groups Projects
Verified Commit e3bdeb4b authored by Isabella Skořepová's avatar Isabella Skořepová
Browse files

Promisify tags

parent a910ae02
No related branches found
No related tags found
No related merge requests found
#!/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)
});
......
......@@ -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"
},
......
......@@ -17,6 +17,7 @@ module.exports = function() {
builddir: builddir,
watch: watch,
articlesLocation: 'content/articles',
linksPerPage: 6
}
})
}
......@@ -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');
}
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)
}
......@@ -10,6 +10,7 @@ module.exports = function(config) {
['print', './print'],
['readFiles', './readFiles'],
['toURL', './toURL'],
['tags', './tags'],
['pipeline','./pipeline']
)
......
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);
})
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment