mirror of
https://github.com/LukeHagar/libopenapi.git
synced 2025-12-10 04:20:24 +00:00
Allow to override basePath for file lookup
This commit is contained in:
@@ -15,6 +15,10 @@ type DocumentConfiguration struct {
|
||||
// Schema must be set to "http/https".
|
||||
BaseURL *url.URL
|
||||
|
||||
// If resolving locally, the BasePath will be the root from which relative references will be resolved from.
|
||||
// It usually location of the root specification.
|
||||
BasePath string // set the Base Path for resolving relative references if the spec is exploded.
|
||||
|
||||
// AllowFileReferences will allow the index to locate relative file references. This is disabled by default.
|
||||
AllowFileReferences bool
|
||||
|
||||
|
||||
@@ -2,14 +2,15 @@ package v3
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"os"
|
||||
"sync"
|
||||
|
||||
"github.com/pb33f/libopenapi/datamodel"
|
||||
"github.com/pb33f/libopenapi/datamodel/low"
|
||||
"github.com/pb33f/libopenapi/datamodel/low/base"
|
||||
"github.com/pb33f/libopenapi/index"
|
||||
"github.com/pb33f/libopenapi/resolver"
|
||||
"github.com/pb33f/libopenapi/utils"
|
||||
"os"
|
||||
"sync"
|
||||
)
|
||||
|
||||
// CreateDocument will create a new Document instance from the provided SpecInfo.
|
||||
@@ -38,9 +39,13 @@ func createDocument(info *datamodel.SpecInfo, config *datamodel.DocumentConfigur
|
||||
version = low.NodeReference[string]{Value: versionNode.Value, KeyNode: labelNode, ValueNode: versionNode}
|
||||
doc := Document{Version: version}
|
||||
|
||||
// get current working directory
|
||||
// get current working directory as a basePath
|
||||
cwd, _ := os.Getwd()
|
||||
|
||||
// If basePath is provided override it
|
||||
if config.BasePath != "" {
|
||||
cwd = config.BasePath
|
||||
}
|
||||
// build an index
|
||||
idx := index.NewSpecIndexWithConfig(info.RootNode, &index.SpecIndexConfig{
|
||||
BaseURL: config.BaseURL,
|
||||
@@ -72,14 +77,15 @@ func createDocument(info *datamodel.SpecInfo, config *datamodel.DocumentConfigur
|
||||
_, dialectLabel, dialectNode := utils.FindKeyNodeFull(JSONSchemaDialectLabel, info.RootNode.Content)
|
||||
if dialectNode != nil {
|
||||
doc.JsonSchemaDialect = low.NodeReference[string]{
|
||||
Value: dialectNode.Value, KeyNode: dialectLabel, ValueNode: dialectNode}
|
||||
Value: dialectNode.Value, KeyNode: dialectLabel, ValueNode: dialectNode,
|
||||
}
|
||||
}
|
||||
|
||||
var runExtraction = func(info *datamodel.SpecInfo, doc *Document, idx *index.SpecIndex,
|
||||
runExtraction := func(info *datamodel.SpecInfo, doc *Document, idx *index.SpecIndex,
|
||||
runFunc func(i *datamodel.SpecInfo, d *Document, idx *index.SpecIndex) error,
|
||||
ers *[]error,
|
||||
wg *sync.WaitGroup) {
|
||||
|
||||
wg *sync.WaitGroup,
|
||||
) {
|
||||
if er := runFunc(info, doc, idx); er != nil {
|
||||
*ers = append(*ers, er)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user