forked from nlf/node-proto2json
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathproto2json.js
executable file
·69 lines (61 loc) · 1.44 KB
/
proto2json.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#!/usr/bin/env node
/*!
* Copyright (C) 2012 by Oleg Efimov
*
* See license text in LICENSE file
*/
var ArgumentParser = require('argparse').ArgumentParser;
var parser = new ArgumentParser({
prog: "proto2json",
description: require('../package.json').description,
version: require('../package.json').version,
addHelp: true
});
parser.addArgument(
[ '-i', '--input' ],
{
action: 'store',
defaultValue: '-',
type: 'string',
help: 'Input proto file. Default: read from stdin.'
}
);
parser.addArgument(
[ '-o', '--output' ],
{
action: 'store',
defaultValue: '-',
help: 'Output JSON file. Default: write to stdout.'
}
);
var args = parser.parseArgs();
var fs = require('fs');
var input_stream;
if (args.input === '-') {
input_stream = process.stdin;
process.stdin.resume();
} else {
input_stream = fs.createReadStream(args.input);
}
var input_buffer = new Buffer('');
input_stream.on('data', function (chunk) {
input_buffer = Buffer.concat([input_buffer, chunk]);
});
input_stream.on('end', function () {
var proto2json = require('../');
proto2json.parse(input_buffer.toString(), function (err ,json) {
if (err) {
throw err;
}
var data = JSON.stringify(json, null, ' ') + '\n';
if (args.output === '-') {
process.stdout.write(data);
} else {
fs.writeFile(args.output, data, function (err) {
if (err) {
throw err;
}
});
}
});
});