-
Notifications
You must be signed in to change notification settings - Fork 5
/
blogdown.js
66 lines (61 loc) · 2.07 KB
/
blogdown.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
/*
* blogdown
*
* Copyright (c) 2013 Maximilian Antoni <mail@maxantoni.de>
*
* @license MIT
*/
'use strict';
var templateReader = require('./template-reader');
var reader = require('./reader');
var processor = require('./item-processor');
var renderer = require('./html-renderer');
var writer = require('./file-writer');
var list = require('./list');
var meta = require('./meta');
module.exports = function (source, target, options, callback) {
console.info('Reading from "%s"', source);
var metaOptions = options.meta || {};
var context = { root : source };
var globalTemplate = { publish : metaOptions.publish || false };
reader.read(source, globalTemplate, context, function (err, data) {
if (err) {
callback(err);
} else {
var items = data.items;
metaOptions.target = target;
meta.update(items, metaOptions, function (err, metaResult) {
if (err) {
callback(err);
} else {
try {
processor.process(items, source, options);
var lists = list.createAll(items, options.lists, context);
var partials = data.partials;
var files = renderer.render(items, lists, partials, context);
writer.write(files, target, function (err) {
if (err) {
callback(err);
} else if (metaOptions.publish) {
meta.persist(metaResult.meta, metaOptions, function (err) {
callback(err, { files : files.length });
});
} else {
callback(null, { files : files.length });
}
});
if (metaResult.deleted.length) {
console.warn('You may want to delete these files:');
var deleted = metaResult.deleted.map(function (deleted) {
return target + '/' + deleted;
});
console.warn(' rm ' + deleted.join(' '));
}
} catch (e) {
callback(e);
}
}
});
}
});
};