forked from Mermade/openapi-filter
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathopenapi-filter.js
More file actions
executable file
·58 lines (53 loc) · 1.56 KB
/
openapi-filter.js
File metadata and controls
executable file
·58 lines (53 loc) · 1.56 KB
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
#!/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 = yargs
.usage('Usage: openapi-filter [options] {infile} [{outfile}]')
.demand(1)
.strict()
.boolean('inverse')
.describe('inverse','output filtered elements only')
.alias('i','inverse')
.boolean('reverse')
.describe('reverse','generate valid doc by retaining filtered elements; applies to OpenAPI3 only;')
.alias('r', 'reverse')
.array('tags')
.alias('t','tags')
.describe('tags','tags to filter by')
.default('tags',['x-internal'])
.array('overrides')
.alias('o', 'overrides')
.default('overrides', [])
.describe('overrides', 'tags to override fields')
.boolean('valid')
.describe('valid','try to ensure inverse output is valid')
.boolean('strip')
.alias('s', 'strip')
.describe('strip','strip the tags from the finished product')
.number('lineWidth')
.alias('l', 'lineWidth')
.describe('lineWidth','max line width of yaml output')
.default('lineWidth',-1)
.alias('i','inverse')
.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:argv.lineWidth});
}
if (argv._.length>1) {
fs.writeFileSync(argv._[1],s,'utf8');
}
else {
console.log(s);
}