Cut metadata history over to shared model
This commit is contained in:
@@ -25,19 +25,41 @@ func preparePostDecodeOverrideContext(input assembledInput, before decodedConfig
|
||||
|
||||
metadata := metadataFromDecoded(before)
|
||||
cliRecords := overrideMetadataRecords(before, assigned.overrides)
|
||||
applications := structuralHistoryApplications(input)
|
||||
var structuralOverlays []overlayRecord
|
||||
if input.inheritance != nil && input.composition != nil {
|
||||
structuralOverlays = input.composition.overlays
|
||||
metadata.historyBuilder.setScratch(input.composition.root)
|
||||
metadata.historyBuilder.observeSourceEvidence(input.composition.root, input.composition.origins, applications, structuralOverlays)
|
||||
applyInheritanceMetadata(&metadata, input.composition.root, input.composition.origins, structuralOverlays, input.inheritance)
|
||||
metadata.historyBuilder.setScratch(input.composition.root)
|
||||
metadata.historyBuilder.observeInheritanceEvidence(input.inheritance.operations)
|
||||
} else if input.composition != nil {
|
||||
structuralOverlays = input.composition.overlays
|
||||
metadata.historyBuilder.setScratch(input.composition.root)
|
||||
metadata.historyBuilder.observeSourceEvidence(input.composition.root, input.composition.origins, applications, structuralOverlays)
|
||||
applyOverlayMetadata(&metadata, structuralOverlays)
|
||||
} else if len(applications) != 0 {
|
||||
metadata.historyBuilder.observeSourceEvidence(input.document, nil, applications, nil)
|
||||
}
|
||||
metadata.historyBuilder.observePreCLICheckpoint(before.final, before.origins)
|
||||
var postDecodeApps []historyApplication
|
||||
for _, override := range assigned.overrides {
|
||||
postDecodeApps = append(postDecodeApps, historyApplication{
|
||||
layer: LayerCLI,
|
||||
path: override.path.clone(),
|
||||
value: document.Clone(override.value),
|
||||
origin: overlayOrigin(LayerCLI, document.Location{SourceID: override.source.ID}),
|
||||
})
|
||||
}
|
||||
if len(cliRecords) != 0 {
|
||||
metadata.fields = make(map[string]FieldInfo)
|
||||
collectFieldInfo(after.final, Path{}, after, metadata.fields)
|
||||
appendPostDecodeCLIHistory(&metadata, cliRecords)
|
||||
}
|
||||
if len(cliRecords) != 0 || len(postDecodeApps) != 0 {
|
||||
appendPostDecodeCLIHistory(&metadata, cliRecords, postDecodeApps, before.final)
|
||||
}
|
||||
metadata.historyBuilder.observePostCLICheckpoint(after.final, after.origins)
|
||||
|
||||
sources := cloneSourceInfos(input.sources)
|
||||
knownSources := make(map[string]bool, len(sources)+len(assigned.overrides))
|
||||
@@ -55,16 +77,6 @@ func preparePostDecodeOverrideContext(input assembledInput, before decodedConfig
|
||||
}
|
||||
resolution := newResolutionInput(metadata, assigned.final, sources, input.contexts)
|
||||
|
||||
applications := structuralHistoryApplications(input)
|
||||
var postDecodeApps []historyApplication
|
||||
for _, override := range assigned.overrides {
|
||||
postDecodeApps = append(postDecodeApps, historyApplication{
|
||||
layer: LayerCLI,
|
||||
path: override.path.clone(),
|
||||
value: document.Clone(override.value),
|
||||
origin: overlayOrigin(LayerCLI, document.Location{SourceID: override.source.ID}),
|
||||
})
|
||||
}
|
||||
finalizeEffectiveMetadataPaths(&metadata, assigned.final)
|
||||
|
||||
return postDecodeOverrideContext{
|
||||
@@ -83,7 +95,9 @@ func preparePostDecodeOverrideContext(input assembledInput, before decodedConfig
|
||||
// Source history is already assembled, with inheritance projected at query time.
|
||||
// Reuse overlay event construction for CLI changes without reapplying displaced
|
||||
// source definitions after those later assignments.
|
||||
func appendPostDecodeCLIHistory(metadata *Metadata, records []overlayRecord) {
|
||||
func appendPostDecodeCLIHistory(metadata *Metadata, records []overlayRecord, applications []historyApplication, before *document.Node) {
|
||||
metadata.historyBuilder.setScratch(before)
|
||||
metadata.historyBuilder.observeCLIEvidence(applications, records)
|
||||
cli := Metadata{fields: metadata.fields}
|
||||
applyOverlayMetadata(&cli, records)
|
||||
for pointer, history := range cli.history {
|
||||
|
||||
Reference in New Issue
Block a user