@@ -71,6 +71,7 @@ func run() error {
7171 typeName = flag .String ("typename" , "" , "Root schema type name" )
7272 inferTypes = flag .Bool ("infer-types" , false , "Infer schema types, if type is not defined explicitly" )
7373 performFormat = flag .Bool ("format" , true , "Perform code formatting" )
74+ allowRemote = flag .Bool ("allow-remote" , true , "Allow remote and external references" )
7475 trimPrefixes = StringArrayFlag {"#/definitions/" , "#/$defs/" }
7576 logOptions ogenzap.Options
7677 )
@@ -82,6 +83,15 @@ func run() error {
8283 if flag .NArg () < 1 || specPath == "" {
8384 return errors .New ("no spec provided" )
8485 }
86+
87+ logger , err := ogenzap .Create (logOptions )
88+ if err != nil {
89+ return err
90+ }
91+ defer func () {
92+ _ = logger .Sync ()
93+ }()
94+
8595 specPath = filepath .Clean (specPath )
8696 abs , err := filepath .Abs (specPath )
8797 if err != nil {
@@ -101,7 +111,16 @@ func run() error {
101111 if err := yaml .Unmarshal (data , & root ); err != nil {
102112 return errors .Wrap (err , "parse yaml" )
103113 }
114+
115+ externalResolver := jsonschema .ExternalResolver (nil )
116+ if * allowRemote {
117+ externalResolver = jsonschema .NewExternalResolver (jsonschema.ExternalOptions {
118+ Logger : logger ,
119+ })
120+ }
121+
104122 p := jsonschema .NewParser (jsonschema.Settings {
123+ External : externalResolver ,
105124 Resolver : jsonschema .NewRootResolver (& root ),
106125 InferTypes : * inferTypes ,
107126 })
@@ -131,13 +150,6 @@ func run() error {
131150 * packageName = "output"
132151 }
133152
134- logger , err := ogenzap .Create (logOptions )
135- if err != nil {
136- return err
137- }
138- defer func () {
139- _ = logger .Sync ()
140- }()
141153 if err := gen .GenerateSchema (schema , fs , gen.GenerateSchemaOptions {
142154 TypeName : * typeName ,
143155 FileName : file ,
0 commit comments