forked from coolaj86/blogger2jekyll
-
Notifications
You must be signed in to change notification settings - Fork 0
/
blogger2jekyll.js
executable file
·59 lines (48 loc) · 1.48 KB
/
blogger2jekyll.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
#!/usr/bin/env node
/*jshint strict:true node:true es5:true onevar:true laxcomma:true laxbreak:true eqeqeq:true immed:true latedef:true*/
(function () {
"use strict";
var fs = require('fs')
, mkdirp = require('mkdirp')
, path = require ('path')
, b2j = require('../lib')
, file = process.argv[2]
, folder = process.argv[3] || 'blogger-posts'
, nodes
;
if (!file) {
fs.readdirSync(process.cwd()).forEach(function (node) {
if (/^blog-.*\.xml$/.test(node)) {
file = node;
}
});
}
if (!file) {
console.error("Couldn't find a file like blog-dd-mm-yyyy.xml in the current directory. Please specify one instead");
return;
}
function eachPost(relpath, contents) {
var filename = relpath.split('/').pop()
;
var date=new RegExp(/date\:\s\"([0-9]{4}-[0-9]{2}-[0-9]{2})/)
;
if ( date.test(contents) && ( contents.indexOf('published: "false"') == -1 ) ) {
filename = date.exec(contents)[1] + '-' + filename;
} else {
filename = 'DRAFT' + '-' + filename;
}
// write the files out flat, the static compiler with write out the folders
fs.writeFileSync(path.join(folder, filename), contents, 'utf8');
}
function parseFile(err, data) {
b2j.parse(data, eachPost, { prefix: '', wrapRaw: true });
}
function readFile(err) {
if (err) { throw err; }
fs.readFile(file, 'utf8', parseFile);
}
function writeFiles() {
mkdirp(folder, readFile);
}
writeFiles();
}());