@@ -7,6 +7,8 @@ import isGlob from 'is-glob'
77import { join , resolve , dirname } from 'path'
88import { compile , DEFAULT_OPTIONS , Options } from './index'
99import { pathTransform , error , parseFileAsJSONSchema , justName } from './utils'
10+ import { ParserOptions as $RefOptions } from '@apidevtools/json-schema-ref-parser'
11+ import { merge } from 'lodash'
1012
1113main (
1214 minimist ( process . argv . slice ( 2 ) , {
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+
162179function printHelp ( ) {
163180 const pkg = require ( '../../package.json' )
164181
0 commit comments