Expose layered configuration loading and inspection
This commit is contained in:
22
lifecycle.go
22
lifecycle.go
@@ -87,6 +87,10 @@ func Load[T any](source Source, supplied ...Options[T]) (*Result[T], error) {
|
||||
options[index] = toEngineOptions(supplied[index])
|
||||
}
|
||||
loaded, err := engine.Load(source.toEngine(), secretBinding(), options...)
|
||||
return fromEngineLoaded(loaded, err)
|
||||
}
|
||||
|
||||
func fromEngineLoaded[T any](loaded *engine.Loaded[T], err error) (*Result[T], error) {
|
||||
if err != nil {
|
||||
var loadError *engine.LoadError
|
||||
if errors.As(err, &loadError) {
|
||||
@@ -226,11 +230,7 @@ func toEngineOptions[T any](options Options[T]) engine.Options[T] {
|
||||
Overlay: options.Overlay,
|
||||
}
|
||||
if options.Filesystem != nil {
|
||||
result.Filesystem = &engine.FilesystemContext{BaseDir: options.Filesystem.BaseDir, Root: options.Filesystem.Root}
|
||||
if options.Filesystem.FS != nil {
|
||||
filesystem := options.Filesystem.FS.value
|
||||
result.Filesystem.FS = &filesystem
|
||||
}
|
||||
result.Filesystem = toEngineFilesystemContext(options.Filesystem)
|
||||
}
|
||||
if options.Overrides != nil {
|
||||
result.Overrides = make([]engine.Override, len(options.Overrides))
|
||||
@@ -243,6 +243,18 @@ func toEngineOptions[T any](options Options[T]) engine.Options[T] {
|
||||
return result
|
||||
}
|
||||
|
||||
func toEngineFilesystemContext(context *FilesystemContext) *engine.FilesystemContext {
|
||||
if context == nil {
|
||||
return nil
|
||||
}
|
||||
result := &engine.FilesystemContext{BaseDir: context.BaseDir, Root: context.Root}
|
||||
if context.FS != nil {
|
||||
filesystem := context.FS.value
|
||||
result.FS = &filesystem
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
func toEngineDefinition[T any](definition Definition[T]) engine.Definition[T] {
|
||||
result := engine.Definition[T]{Defaults: definition.Defaults}
|
||||
if definition.Resolve != nil {
|
||||
|
||||
Reference in New Issue
Block a user