forked from Mermade/openapi-filter
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathopenapi-filter.js
executable file
·43 lines (38 loc) · 1 KB
/
openapi-filter.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
#!/usr/bin/env node
'use strict';
const fs = require('fs');
const yaml = require('js-yaml');
const yargs = require('yargs');
const openapiFilter = require('./index.js');
let argv = require('yargs')
.usage('Usage: openapi-filter [options] {infile} [{outfile}]')
.demand(1)
.strict()
.boolean('inverse')
.describe('inverse','output filtered elements only')
.alias('i','inverse')
.array('tags')
.alias('t','tags')
.describe('tags','tags to filter by')
.default('tags',['x-internal'])
.boolean('valid')
.describe('valid','try to ensure inverse output is valid')
.help('h')
.alias('h', 'help')
.version()
.argv;
let s = fs.readFileSync(argv._[0],'utf8');
let obj = yaml.safeLoad(s,{json:true});
let res = openapiFilter.filter(obj,argv);
if (argv._[0].indexOf('.json')>=0) {
s = JSON.stringify(res,null,2);
}
else {
s = yaml.safeDump(res,{lineWidth:-1});
}
if (argv._.length>1) {
fs.writeFileSync(argv._[1],s,'utf8');
}
else {
console.log(s);
}