Skip to content

Commit 7cd5998

Browse files
authored
Merge pull request #1434 from dtjm/jschemagen-allow-remote
feat(jschemagen): add flag for `allow-remote` to allow external resolver
2 parents 4903967 + 8f0a599 commit 7cd5998

File tree

1 file changed

+19
-7
lines changed

1 file changed

+19
-7
lines changed

cmd/jschemagen/main.go

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)