ghpages-convert
Version:
A command line tool to convert github page templates to blogs
88 lines (63 loc) • 2.32 kB
JavaScript
var fs = require('fs');
var path = require('path');
var assert = require('assert');
var cheerio = require('cheerio');
var copyFile = require('./extensions/copyFile');
var GithubTemplateConverter =function (){
var self = this;
self.convertHead = function($,baseDirectory,onComplete){
fs.writeFile(baseDirectory+'/_includes/head.html',
$.html("head"),
function (err) {
if (err) throw err;
});
$('head').replaceWith("{% include head.html %}");
};
self.convertHeader = function($,baseDirectory,onComplete){
var selector = "header";
if($('body').hasClass('#header_wrap'))
selector = '#header_wrap';
fs.writeFile(baseDirectory+'/_includes/header.html',$.html(selector));
$(selector).replaceWith("{% include header.html %}");
};
self.convertFooter = function($,baseDirectory,onComplete){
var selector = "footer";
if($('body').hasClass('#footer_wrap'))
selector = '#footer_wrap';
fs.writeFile(baseDirectory+'/_includes/footer.html',$.html(selector));
$(selector).replaceWith("{% include footer.html %}");
};
self.convertMain = function($,baseDirectory,onComplete){
var date = new Date();
var year = date.getFullYear();
var month = date.getMonth()+1;
var day = date.getDate();
var postName = year+"-"+month+"-"+day+"-"+'Github-Pages.html';
fs.writeFile(baseDirectory+'/_posts/'+postName,$("section").html());
$("section").empty();
$("section").append("{{content}}");
};
self.createDefaultLayout = function($,baseDirectory,onComplete){
fs.writeFile(baseDirectory+'/_layouts/default.html',$.html());
};
self.createIndex = function($,baseDirectory,onComplete){
copyFile(__dirname+'/templates/default/index.html',baseDirectory+'/index.html');
};
self.convert= function(fileToConvert){
assert(fileToConvert,'File to convert must be defined');
var baseDirectory = path.dirname(fileToConvert);
fs.readFile(fileToConvert, 'utf8', function (err,data) {
if (err) {
return console.log(err);
}
var $ = cheerio.load(data);
self.convertHead($,baseDirectory);
self.convertHeader($,baseDirectory);
self.convertFooter($,baseDirectory);
self.convertMain($,baseDirectory);
self.createDefaultLayout($,baseDirectory);
self.createIndex($,baseDirectory);
});
};
};
module.exports = new GithubTemplateConverter();