minori
Version:
Minori is a static Wiki site generator
76 lines (66 loc) • 2.2 kB
JavaScript
var fs = require('fs');
var path = require('path');
var mkdirp = require('mkdirp');
var prompt = require("prompt");
var cwd = process.cwd();
var done = require('./done');
var commit = require('./commit');
var config = require('./config')();
var settings = require('./settings.js');
var template = settings.NOTE_TEMPLATE_PATH;
prompt.message = "[MinoriWiki]";
var open = function (file) {
var ed = require('child_process').spawn(
config['custom'].editor, [
file
], {
stdio: 'inherit'
});
ed.on('exit', finalize, config);
};
var finalize = function () {
prompt.start();
prompt.get({
properties: {
message: {
description: "Please describe your changes"
}
}
}, function (err, result) {
commit(cwd + '/' + config['dir'].source, result.message, true);
done();
});
};
module.exports = function (filename) {
// ending in .md?
filename = filename.endsWith('.md') ? filename : filename + '.md';
var file = path.join(cwd, config['dir'].source, filename);
var title = filename.split('.md')[0];
fs.stat(file, function (err, stat) {
if (!err) {
console.log('File exists - Opening...');
open(file);
} else if (err.code === 'ENOENT') {
console.log('Creating: ' + file);
var content = fs.readFileSync(template, 'utf8')
.replace('[% title %]', title)
.replace('[% category %]', config['custom'].category)
.replace('[% time %]', Date.now());
mkdirp.sync(path.dirname(file), {mode: '0755'});
fs.writeFile(file, content, {
encoding: 'utf8'
}, function (err) {
if (err) {
console.error(err);
console.error('Error creating new page file, please check your Minori installation.');
process.exit(1);
}
open(file);
});
} else {
console.error('Error stat file: ' + file + '\n' + err.code);
process.exit(1);
}
});
};
;