erasmus
Version:
A simple tool for literate programming
54 lines (53 loc) • 1.34 kB
JavaScript
;
var path_1 = require('path');
var fs_1 = require('fs');
var erasmus_1 = require('./erasmus');
function exit(error) {
var code;
if (error) {
code = -1;
console.error(error instanceof Error ? error.message : error);
}
else {
code = 0;
}
process.exit(code);
}
// The module is not being invoked directly
if (require.main !== module) {
console.error(path_1.basename(__filename) + " can only be invoked as a command.");
process.exit(-1);
}
var encoding = "utf8";
var output = process.stdout;
var _a = process.argv, option = _a[2];
var input = undefined;
var message = "Could not continue.";
switch (option) {
case undefined:
case "-h":
case "--help":
message = "Usage: erasmus FILE";
break;
case "-p":
case "--pipe":
input = process.stdin;
break;
default:
if (fs_1.existsSync(option) && fs_1.statSync(option).isFile()) {
input = fs_1.createReadStream(option);
}
else {
message = "Could not open " + option + ".";
}
}
if (input == undefined) {
exit(message);
}
else {
var extractor = new erasmus_1.CodeExtractor({ encoding: "utf-8" });
input.on("error", exit);
input.setEncoding(encoding);
input.pipe(extractor).pipe(output);
}