Complete bounded glob imports
This commit is contained in:
20
load.go
20
load.go
@@ -17,8 +17,8 @@ type Definition[T any] struct {
|
||||
}
|
||||
|
||||
// Options contains the application definition and per-load input selections.
|
||||
// Imports enables explicit path imports; glob imports and later precedence layers
|
||||
// remain unavailable until their owning features are implemented.
|
||||
// Imports enables explicit path and glob imports; later precedence layers remain
|
||||
// unavailable until their owning features are implemented.
|
||||
type Options[T any] struct {
|
||||
Definition Definition[T]
|
||||
Imports bool
|
||||
@@ -127,6 +127,12 @@ func Load[T any](source Source, supplied ...Options[T]) (*Result[T], error) {
|
||||
if parsed.source != nil {
|
||||
accumulator.sources = append(accumulator.sources, *parsed.source)
|
||||
}
|
||||
if options.Filesystem != nil {
|
||||
if diagnostic := validateFilesystemContext(source, options.Filesystem, parsed); diagnostic != nil {
|
||||
accumulator.add(*diagnostic)
|
||||
return nil, accumulator.loadError()
|
||||
}
|
||||
}
|
||||
}
|
||||
if !options.Imports && inputDocument != nil {
|
||||
directiveDiagnostics := disabledDirectiveDiagnostics(inputDocument, Path{})
|
||||
@@ -210,14 +216,8 @@ func selectOptions[T any](source Source, supplied []Options[T]) (Options[T], []D
|
||||
if options.Profile != "" && options.Profile != "default" {
|
||||
diagnostics = append(diagnostics, optionDiagnostic(CodeOptionsUnavailable, "configuration profiles are not available in this release boundary"))
|
||||
}
|
||||
if options.Filesystem != nil && !options.Imports {
|
||||
code := CodeOptionsUnavailable
|
||||
message := "filesystem context is not available in this release boundary"
|
||||
if source.kind == sourceNone {
|
||||
code = CodeOptionsInvalid
|
||||
message = "NoSource cannot use filesystem context"
|
||||
}
|
||||
diagnostics = append(diagnostics, optionDiagnostic(code, message))
|
||||
if options.Filesystem != nil {
|
||||
diagnostics = append(diagnostics, filesystemOptionDiagnostics(source, options.Filesystem)...)
|
||||
}
|
||||
if len(options.Overrides) != 0 {
|
||||
diagnostics = append(diagnostics, optionDiagnostic(CodeOptionsUnavailable, "configuration overrides are not available in this release boundary"))
|
||||
|
||||
Reference in New Issue
Block a user