57 lines
2.1 KiB
Go
57 lines
2.1 KiB
Go
package configkit
|
|
|
|
import "gitea.maximumdirect.net/eric/ConfigKit/internal/engine"
|
|
|
|
// Metadata provides detached effective presence/origin and chronological history
|
|
// queries for a load. Its zero value contains no paths.
|
|
type Metadata struct{ value engine.Metadata }
|
|
|
|
// Lookup returns information for an effective path. Unknown and invalid paths
|
|
// return false.
|
|
func (m Metadata) Lookup(path Path) (FieldInfo, bool) {
|
|
value, ok := m.value.Lookup(toEnginePath(path))
|
|
return fromEngineFieldInfo(value), ok
|
|
}
|
|
|
|
// IsExplicit reports whether a surviving input contribution explicitly defined
|
|
// path.
|
|
func (m Metadata) IsExplicit(path Path) bool {
|
|
return m.value.IsExplicit(toEnginePath(path))
|
|
}
|
|
|
|
// History returns detached definition and resolution records for path. A record's
|
|
// Path can be an ancestor when that container operation replaced or removed path.
|
|
// Removed historical paths can have history even though Lookup returns false.
|
|
// Unknown and invalid paths return nil.
|
|
func (m Metadata) History(path Path) []Change {
|
|
values := m.value.History(toEnginePath(path))
|
|
if values == nil {
|
|
return nil
|
|
}
|
|
result := make([]Change, len(values))
|
|
for index := range values {
|
|
result[index] = fromEngineChange(values[index])
|
|
}
|
|
return result
|
|
}
|
|
|
|
// HistoricalPaths returns the paths observed during loading, including effective
|
|
// paths and paths removed by overlays or recorded resolution. It includes default
|
|
// paths and the root, but not paths that never existed. The zero Metadata returns
|
|
// an empty slice.
|
|
//
|
|
// Paths are detached, unique by canonical JSON Pointer, and sorted by that
|
|
// spelling. Like ParsePath results, numeric tokens are resolved contextually;
|
|
// one pointer can identify a mapping key in an earlier layer and a sequence index
|
|
// in a later one. Use History to inspect definitions and Lookup to check whether
|
|
// a path remains effective. Enumeration exposes no configuration values and does
|
|
// not perform another load or resolve secrets.
|
|
func (m Metadata) HistoricalPaths() []Path {
|
|
values := m.value.HistoricalPaths()
|
|
result := make([]Path, len(values))
|
|
for index := range values {
|
|
result[index] = fromEnginePath(values[index])
|
|
}
|
|
return result
|
|
}
|