Skip to content

Commit 226cf8e

Browse files
author
Norbert Dopjera
committed
feat: [631] implemented refOptions CLI argument
1 parent 118d6a8 commit 226cf8e

File tree

1 file changed

+18
-1
lines changed

1 file changed

+18
-1
lines changed

src/cli.ts

+18-1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ import isGlob from 'is-glob'
77
import {join, resolve, dirname} from 'path'
88
import {compile, DEFAULT_OPTIONS, Options} from './index'
99
import {pathTransform, error, parseFileAsJSONSchema, justName} from './utils'
10+
import {ParserOptions as $RefOptions} from '@apidevtools/json-schema-ref-parser'
11+
import { merge } from 'lodash'
1012

1113
main(
1214
minimist(process.argv.slice(2), {
@@ -26,7 +28,7 @@ main(
2628
'unreachableDefinitions',
2729
],
2830
default: DEFAULT_OPTIONS,
29-
string: ['bannerComment', 'cwd'],
31+
string: ['bannerComment', 'cwd', 'refOptions'],
3032
}),
3133
)
3234

@@ -36,6 +38,7 @@ async function main(argv: minimist.ParsedArgs) {
3638
process.exit(0)
3739
}
3840

41+
parseRefOptions(argv)
3942
const argIn: string = argv._[0] || argv.input
4043
const argOut: string | undefined = argv._[1] || argv.output // the output can be omitted so this can be undefined
4144

@@ -159,6 +162,20 @@ async function readStream(stream: NodeJS.ReadStream): Promise<string> {
159162
return Buffer.concat(chunks).toString('utf8')
160163
}
161164

165+
function parseRefOptions(argv: minimist.ParsedArgs) {
166+
try {
167+
// Parse --refOptions CLI argument and merge with default value
168+
// argv default value already contains predefined $refOptions key
169+
if (argv.refOptions) {
170+
const parsedRefOptions: Partial<$RefOptions> = JSON.parse(argv.refOptions)
171+
merge(argv, { $refOptions: parsedRefOptions })
172+
}
173+
} catch (e) {
174+
error("Couldn't parse argument --refOptions, make sure it's a valid JSON string.")
175+
throw e
176+
}
177+
}
178+
162179
function printHelp() {
163180
const pkg = require('../../package.json')
164181

0 commit comments

Comments
 (0)