Skip to content
This repository was archived by the owner on Jul 15, 2021. It is now read-only.

Commit b4700fb

Browse files
committed
Clean up command line utility code. Refs #26
1 parent c128786 commit b4700fb

File tree

2 files changed

+55
-49
lines changed

2 files changed

+55
-49
lines changed

bin/sqlite-parser

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,4 @@
44
* @copyright 2015-2016 Code School (http://codeschool.com)
55
* @author Nick Wronski <[email protected]>
66
*/
7-
'use strict';var _index=require('../lib/index');var _index2=_interopRequireDefault(_index);var _fs=require('fs');var _path=require('path');function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}function error(err){console.error(err.message);process.exit(1);}function writeOut(result,outPath){var outDir=(0,_path.dirname)(outPath);function writeCallback(err){if(err){return error(err);}console.log('Wrote '+outPath);process.exit(0);}function mkdirCallback(err){if(err){return error(err);}(0,_fs.writeFile)(outPath,result,writeCallback);}function statCallback(err){if(err){return(0,_fs.mkdir)(outDir,mkdirCallback);}mkdirCallback();}(0,_fs.stat)(outDir,statCallback);}function parserCallback(err,ast){if(err){return error(err);}var result=void 0;try{result=JSON.stringify(ast,null,2);}catch(e){return error(e);}if(output){writeOut(result,output);}else{process.stdout.write(result);process.exit(0);}}function readCallback(err,data){if(err){return error(err);}(0,_index2.default)(data,parserCallback);}function startCallback(err){if(err){return error(err);}(0,_fs.readFile)(input,'utf8',readCallback);}(function(argv){var args={_:[]};var last=null;var isNewArg=function isNewArg(arg){return!arg||arg.indexOf('-')===0;};var aliases={o:'output',v:'version',h:'help'};for(var i=0;i<argv.length;i+=1){var arg=argv[i];if(isNewArg(arg)){var cur=arg.indexOf('--')!==-1?arg.slice(2):aliases[arg.slice(1)];var peek=argv.length-1!==i?argv[i+1]:null;var peekNew=isNewArg(peek);args[cur]=peekNew?true:peek;if(!peekNew){i+=1;}}else{args._.push(arg);}}if(args['version']){console.log('sqlite-parser v1.0.0-beta2');process.exit(0);}if(args['help']||args._.length===0){console.log('Usage: sqlite-parser infile [--output outfile]');process.exit(0);}var input=(0,_path.normalize)(args._[0]);var output=args['o']||args['output'];if(output){output=(0,_path.normalize)(output);}(0,_fs.stat)(input,startCallback);})(process.argv.slice(2));
7+
'use strict';var _index=require('../lib/index');var _index2=_interopRequireDefault(_index);var _fs=require('fs');var _path=require('path');function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}var args=resolveArgs(process.argv.slice(2));if(args['version']){console.log('sqlite-parser v1.0.0-beta2');process.exit(0);}if(args['help']||args._.length===0){console.log('Usage: sqlite-parser infile [--output outfile]');process.exit(0);}var input=(0,_path.normalize)(args._[0]);var output=args['o']||args['output'];if(output){output=(0,_path.normalize)(output);}(0,_fs.stat)(input,function startCallback(err){if(err){return error(err);}(0,_fs.readFile)(input,'utf8',readCallback);});function resolveArgs(argv){var args={_:[]};var last=null;var isNewArg=function isNewArg(arg){return!arg||arg.indexOf('-')===0;};var aliases={o:'output',v:'version',h:'help'};for(var i=0;i<argv.length;i+=1){var arg=argv[i];if(isNewArg(arg)){var cur=arg.indexOf('--')!==-1?arg.slice(2):aliases[arg.slice(1)];var peek=argv.length-1!==i?argv[i+1]:null;var peekNew=isNewArg(peek);args[cur]=peekNew?true:peek;if(!peekNew){i+=1;}}else{args._.push(arg);}}return args;}function error(err){console.error(err.message);process.exit(1);}function writeOut(result,outPath){var outDir=(0,_path.dirname)(outPath);function writeCallback(err){if(err){return error(err);}process.exit(0);}function mkdirCallback(err){if(err){return error(err);}(0,_fs.writeFile)(outPath,result,writeCallback);}function statCallback(err){if(err){return(0,_fs.mkdir)(outDir,mkdirCallback);}mkdirCallback();}(0,_fs.stat)(outDir,statCallback);}function parserCallback(err,ast){if(err){return error(err);}var result=void 0;try{result=JSON.stringify(ast,null,2);}catch(e){return error(e);}if(output){writeOut(result,output);}else{process.stdout.write(result);process.exit(0);}}function readCallback(err,data){if(err){return error(err);}(0,_index2.default)(data,parserCallback);}

src/bin/sqlite-parser.js

Lines changed: 54 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1,85 +1,96 @@
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

3215
if (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

4428
if (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

5057
function error(err) {
5158
console.error(err.message);
5259
process.exit(1);
5360
}
5461

5562
function 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

8085
function 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

Comments
 (0)