]> git.kianting.info Git - clo/blob - src/index.ts
add bug reporting mechanisms.
[clo] / src / index.ts
1 var fs = require('fs');
2 var argv : any = require('minimist')(process.argv.slice(2));
3
4 import * as parser from "./parser.js";
5
6
7 let helpDesc =
8 `
9 clo: clo INPUT_FILE --output-js OUTPUT_JS_FILE
10
11 \ta little typesetter powered by TypeScript/Javascript.
12
13 ## Arguments
14 INPUT_FILE\tan input .clo file
15
16 ## Parameters
17 ---
18 --output-js\tgenerated the output middle JS file
19
20
21 Report bugs to: clo@kianting.info
22 clo home page: <https://kianting.info/wiki/w/Project:Clo>
23 `
24
25 processArgv(argv, helpDesc);
26
27 /**
28 * processing the passed `argv` (arguments)
29 */
30
31 function processArgv(argv : any, helpDesc : string){
32 let inputFile : string[] = argv['_'];
33 let outputJSFile : string | true = argv['output-js'];
34
35 let NoInputFile : boolean = (inputFile.length == 0);
36 let NoOutputJSFile : boolean = (outputJSFile === undefined || outputJSFile == true);
37 let helpTriggered : boolean = argv['help'];
38
39 if (inputFile.length > 1){
40 console.log("Sorry, the input file should be only one.");
41 }
42
43 /** output --help */
44 if (helpTriggered || NoInputFile || NoOutputJSFile){
45 console.log(helpDesc);
46 }else{
47 fs.readFile(inputFile[0], 'utf8', (err : Error, inputText : string) => {
48 if (err) throw err;
49
50 let tree = parser.inputTextToTree(inputText);
51
52 let output = parser.treeToJS(tree);
53
54 fs.writeFile(outputJSFile, output , (err : Error) => {
55 if (err) throw err;
56 });
57
58 });
59 }
60
61 }
62
63
64
65
66