1- var parser = require ( '../lib/index' ) ;
2- var argv = process . argv . slice ( 2 ) ;
3- var fs = require ( 'fs' ) ;
4- var path = require ( 'path' ) ;
5-
6- var args = { _ : [ ] } ;
7- var last = null ;
8- argv . forEach ( function ( arg , i ) {
9- if ( arg . indexOf ( '-' ) === 0 ) {
10- if ( last ) {
11- args [ last ] = true ;
12- }
13- const cur = arg . slice ( 2 ) ;
14- if ( i === argv . length - 1 ) {
15- args [ cur ] = true ;
16- } else {
17- last = cur ;
18- }
19- } else if ( last ) {
20- args [ last ] = arg ;
21- last = null ;
22- } else {
23- args . _ . push ( arg ) ;
24- }
25- } ) ;
26-
27- if ( args [ 'help' ] ) {
28- console . log ( `Usage: sqlite-parser infile [--output outfile]` ) ;
29- process . exit ( 0 ) ;
30- }
1+ import parser from '../lib/index' ;
2+ import {
3+ stat ,
4+ writeFile ,
5+ mkdir ,
6+ readFile
7+ } from 'fs' ;
8+ import {
9+ normalize ,
10+ dirname
11+ } from 'path' ;
12+
13+ const args = resolveArgs ( process . argv . slice ( 2 ) ) ;
3114
3215if ( args [ 'version' ] ) {
3316 console . log ( `sqlite-parser v@@VERSION` ) ;
3417 process . exit ( 0 ) ;
3518}
3619
37- if ( args . _ . length === 0 ) {
38- throw new Error ( 'No input filename specified.' ) ;
20+ if ( args [ 'help' ] || args . _ . length === 0 ) {
21+ console . log ( `Usage: sqlite-parser infile [--output outfile]` ) ;
22+ process . exit ( 0 ) ;
3923}
4024
41- var input = path . normalize ( args . _ [ 0 ] ) ;
42- var output = args [ 'o' ] || args [ 'output' ] ;
25+ const input = normalize ( args . _ [ 0 ] ) ;
26+ let output = args [ 'o' ] || args [ 'output' ] ;
4327
4428if ( output ) {
45- output = path . normalize ( output ) ;
29+ output = normalize ( output ) ;
4630}
4731
48- fs . stat ( input , startCallback ) ;
32+ stat ( input , function startCallback ( err ) {
33+ if ( err ) { return error ( err ) ; }
34+ readFile ( input , 'utf8' , readCallback ) ;
35+ } ) ;
36+
37+ function resolveArgs ( argv ) {
38+ const args = { _ : [ ] } ;
39+ let last = null ;
40+ const isNewArg = ( arg ) => ! arg || arg . indexOf ( '-' ) === 0 ;
41+ const aliases = { o : 'output' , v : 'version' , h : 'help' } ;
42+ for ( let i = 0 ; i < argv . length ; i += 1 ) {
43+ const arg = argv [ i ] ;
44+ if ( isNewArg ( arg ) ) {
45+ const cur = arg . indexOf ( '--' ) !== - 1 ? arg . slice ( 2 ) : aliases [ arg . slice ( 1 ) ] ;
46+ const peek = argv . length - 1 !== i ? argv [ i + 1 ] : null ;
47+ const peekNew = isNewArg ( peek ) ;
48+ args [ cur ] = peekNew ? true : peek ;
49+ if ( ! peekNew ) { i += 1 ; }
50+ } else {
51+ args . _ . push ( arg ) ;
52+ }
53+ }
54+ return args ;
55+ }
4956
5057function error ( err ) {
5158 console . error ( err . message ) ;
5259 process . exit ( 1 ) ;
5360}
5461
5562function writeOut ( result , outPath ) {
56- var outDir = path . dirname ( outPath ) ;
63+ const outDir = dirname ( outPath ) ;
5764
5865 function writeCallback ( err ) {
5966 if ( err ) { return error ( err ) }
60- // done
61- console . log ( `Wrote ${ outPath } ` ) ;
6267 process . exit ( 0 ) ;
6368 }
6469
6570 function mkdirCallback ( err ) {
6671 if ( err ) { return error ( err ) }
67- fs . writeFile ( outPath , result , writeCallback ) ;
72+ writeFile ( outPath , result , writeCallback ) ;
6873 }
6974
7075 function statCallback ( err ) {
7176 if ( err ) {
72- return fs . mkdir ( outDir , mkdirCallback ) ;
77+ return mkdir ( outDir , mkdirCallback ) ;
7378 }
7479 mkdirCallback ( ) ;
7580 }
7681
77- fs . stat ( outDir , statCallback ) ;
82+ stat ( outDir , statCallback ) ;
7883}
7984
8085function parserCallback ( err , ast ) {
8186 if ( err ) { return error ( err ) }
82- var result = JSON . stringify ( ast , null , 2 ) ;
87+ let result ;
88+
89+ try {
90+ result = JSON . stringify ( ast , null , 2 ) ;
91+ } catch ( e ) {
92+ return error ( e ) ;
93+ }
8394
8495 if ( output ) {
8596 writeOut ( result , output ) ;
@@ -93,8 +104,3 @@ function readCallback(err, data) {
93104 if ( err ) { return error ( err ) }
94105 parser ( data , parserCallback ) ;
95106}
96-
97- function startCallback ( err ) {
98- if ( err ) { return error ( err ) ; }
99- fs . readFile ( input , 'utf8' , readCallback ) ;
100- }
0 commit comments