bin/jsmd
#!/usr/bin/env node
if (require('v8-argv')) return;
/**
* Core dependencies.
*/
var resolve = require('path').resolve;
/**
* Internal dependencies.
*/
var jsmd = require('..');
/**
* Help message.
*/
var help = [
'Usage: jsmd <path>',
'',
'Options:',
'',
' --show display the compiled JS after execution',
' --help display this help message',
' --version display the version number',
'',
].join('\n');
/**
* Args.
*/
var args = process.argv.slice(2);
/**
* Readme file.
*/
var file = args.filter(function(arg) {
return arg.indexOf('--') !== 0;
})[0];
/**
* Debug mode.
*/
var show = args.indexOf('--show') > -1;
// --version
if (args.indexOf('--version') > -1) {
console.log(require('../package.json').version);
process.exit(0);
}
// --help
if (args.indexOf('--help') > -1) {
console.log(help);
process.exit(0);
}
if (file) {
// process file
// make path absolute
file = resolve(process.cwd(), file);
jsmd.verifyFile(file, end);
} else {
// process stdin
var md = '';
// give default name
file = process.cwd() + '/stdin';
process.stdin.setEncoding('utf8');
process.stdin.on('data', function(chunk){ md += chunk; });
process.stdin.on('end', function(){
jsmd.verify(md, file, end);
}).resume();
}
function end(err, js) {
if (err) {
console.error(err.stack);
console.error('');
console.error(file + ':\n');
console.error(number(js));
console.error('');
process.exit(1);
}
if (show) {
console.error(file + ':\n');
console.log(number(js));
}
}
function number(src){
var i = 1;
return src.replace(/^/gm, function(){
var n = ' ' + String(i++);
while (n.length < 4) n += ' ';
return '\033[90m' + n + '| \033[0m';
});
}