UNPKG

minori

Version:

Minori is a static Wiki site generator

76 lines (66 loc) 2.2 kB
"use strict"; 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); } }); };