forked from devongovett/protobuf-jsonschema
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathcli.js
executable file
·36 lines (32 loc) · 1.19 KB
/
cli.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
#!/usr/bin/env node
var commander = require('commander');
var compile = require('./');
var yaml = require('js-yaml');
commander
.version(require('./package.json').version)
.arguments('<files...>')
.option('-m, --model [model]', 'compile given model, default all', '')
.option('-f, --format [format]', 'output format: json or yaml [json]', 'json')
.action(function(files) {
var format = commander.format || 'json';
var model = commander.model || '';
var results = [];
files.forEach(function(file){
var result = compile(file, model);
results.push(result);
})
var r = {"definitions": {}};
results.forEach(function(result){
var keys = Object.keys(result["definitions"]);
for (var i = 0, length = keys.length; i < length; ++i) {
var key = keys[i];
r["definitions"][key] = result["definitions"][key];
}
});
//console.log("xxxxxxxxxxxxxxxxxxxxxxxxxxxx r is:", r["definitions"]["Test"]["properties"])
if (format === 'json')
process.stdout.write(JSON.stringify(r, false, 2) + '\n');
else if (format === 'yaml')
process.stdout.write(yaml.dump(r, { noRefs: true }));
})
.parse(process.argv);