minori
Version:
Minori is a static Wiki site generator
92 lines (85 loc) • 2.94 kB
JavaScript
var argv = require('minimist')(process.argv.slice(2));
var fs = require('fs');
var path = require('path');
var cmdInit = require('./init');
var cmdNote = require('./note');
var cmdDone = require('./done');
var cmdCommit = require('./commit');
var cmdServer = require('./server.js');
var cmdUpdCfg = require('./updatecfg');
module.exports = function () {
if (argv._[0]) {
switch (argv._[0]) {
case 'i':
case 'init':
var init_dir;
if (argv._[1])
init_dir = path.join(process.cwd(), argv._[1]);
else
init_dir = process.cwd();
cmdInit(init_dir);
break;
case 'n':
case 'note':
checkConfig(function () {
if (!argv._[1]) {
console.error('You must provide a filename.');
printHelp();
process.exit(1);
}
cmdNote(argv._[1]);
});
break;
case 'd':
case 'done':
checkConfig(cmdDone);
break;
case 'c':
case 'commit':
checkConfig(cmdCommit);
break;
case 'u':
case 'updatecfg':
checkConfig(cmdUpdCfg);
break;
case 'help':
printHelp();
break;
case 's':
case 'server':
var port = argv._[1] || 8080; // default port is 8080
cmdServer(port);
break;
default:
console.log('Unknown command: ' + argv._[0]);
printHelp();
process.exit(1);
}
} else {
printHelp();
}
};
function printHelp() {
console.log('Usage: minori <command> [file]');
console.log('\nAvailable commands:\n');
console.log('\tinit(i)\t\t\t- Create new work directory at CWD.');
console.log('\tnote(n) [filename]\t- Create new note file. This command also invokes \'done\' command.');
console.log('\tdone(d)\t\t\t- Finish job, generate new site files.');
console.log('\tcommit(c)\t\t- Deploy files to production environment.');
console.log('\tupdatecfg(u)\t\t- Update current config.yml file with new version.');
console.log('\thelp\t\t\t- Display this instruction.');
}
function checkConfig(callback) {
fs.stat('./config.yml', function (e, stat) {
if (e && e.code === 'ENOENT') {
console.error('Error when reading configuration: File not exist. Are you in the correct directory?');
process.exit(1);
} else if (e) {
console.error('Error when reading configuration: ' + e.code);
process.exit(1);
} else {
callback();
}
});
}
;