Separate input acquisition from composition
This commit is contained in:
@@ -168,6 +168,7 @@ func executeLoadRequest[T any](request loadRequest[T], secrets SecretBinding, lo
|
||||
mainOptions := Options[T]{Definition: request.definition, Imports: request.main.imports, Filesystem: request.main.filesystem, destination: request.main.destination.clone(), placementMode: request.main.placementMode}
|
||||
mainOptions.importDefaults = snapshotImportDefaults(request.importDefaults)
|
||||
mainOptions.sequencePolicy = request.sequencePolicy
|
||||
mainOptions.deferAssembly = request.ordinary
|
||||
mainOptions.SourceVersionMode = request.sourceVersionMode
|
||||
mainOptions.Definition.Version = request.protectionVersion()
|
||||
mainOptions.Overrides = request.overrides
|
||||
@@ -205,14 +206,7 @@ func executeLoadRequest[T any](request loadRequest[T], secrets SecretBinding, lo
|
||||
return nil, accumulator.loadError()
|
||||
}
|
||||
}
|
||||
if request.sourceVersionMode == sourceVersionModeDefault {
|
||||
versionDiagnostics := checkVersion(request.definition.Version, input.document)
|
||||
accumulator.add(versionDiagnostics...)
|
||||
if hasErrors(versionDiagnostics) {
|
||||
return nil, accumulator.loadError()
|
||||
}
|
||||
}
|
||||
if request.ordinary && input.document != nil {
|
||||
if request.ordinary && (input.document != nil || input.composition != nil) {
|
||||
input.composition, diagnostics = compositionForInputWithPolicy(input, request.sequencePolicy)
|
||||
if len(diagnostics) != 0 {
|
||||
accumulator.add(diagnostics...)
|
||||
@@ -220,6 +214,13 @@ func executeLoadRequest[T any](request loadRequest[T], secrets SecretBinding, lo
|
||||
}
|
||||
input.document = input.composition.root
|
||||
}
|
||||
if request.sourceVersionMode == sourceVersionModeDefault {
|
||||
versionDiagnostics := checkVersion(request.definition.Version, input.document)
|
||||
accumulator.add(versionDiagnostics...)
|
||||
if hasErrors(versionDiagnostics) {
|
||||
return nil, accumulator.loadError()
|
||||
}
|
||||
}
|
||||
if request.ordinary {
|
||||
input, diagnostics = applyInputLayers(request.main.source, mainOptions, input)
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user