Normalize ordinary and grouped load preflight
This commit is contained in:
@@ -49,35 +49,23 @@ type acquiredUnderlayGroup struct {
|
||||
|
||||
func loadGroupedWithSecretLookup[T any](request loadRequest[T], secrets SecretBinding, lookup secretLookup) (*Loaded[T], error) {
|
||||
request.ordinary = false
|
||||
var diagnostics []Diagnostic
|
||||
request.importDefaults = snapshotImportDefaults(request.importDefaults)
|
||||
diagnostics = append(diagnostics, validateImportDefaults(request.importDefaults)...)
|
||||
policy, policyDiagnostics := compileSequenceIdentityPolicy(request.definition.sequenceIdentityRegistrations)
|
||||
defaults, policy, diagnostics := loadSettings(request.importDefaults, request.definition, request.sourceVersionMode)
|
||||
request.importDefaults = defaults
|
||||
request.sequencePolicy = policy
|
||||
diagnostics = append(diagnostics, policyDiagnostics...)
|
||||
request.definition.sequenceIdentityRegistrations = nil
|
||||
mainOptions, mainDiagnostics := selectOptions(request.main.source, []Options[T]{{
|
||||
Definition: request.definition, Imports: request.main.imports, Filesystem: request.main.filesystem, destination: request.main.destination.clone(),
|
||||
SourceVersionMode: request.sourceVersionMode, placementMode: request.main.placementMode,
|
||||
importDefaults: request.importDefaults, importDefaultsValidated: true,
|
||||
}})
|
||||
request.main.destination = mainOptions.destination
|
||||
main, mainDiagnostics := normalizeInput(request.main, "")
|
||||
request.main = main
|
||||
diagnostics = append(diagnostics, mainDiagnostics...)
|
||||
request.effectiveVersion = effectiveSourceVersionRuleForPlacement(request.definition.Version, request.main.destination, request.sourceVersionMode, request.main.placementMode)
|
||||
for groupIndex := range request.underlays {
|
||||
for inputIndex := range request.underlays[groupIndex].inputs {
|
||||
input := &request.underlays[groupIndex].inputs[inputIndex]
|
||||
inputOptions, inputDiagnostics := selectOptions(input.source, []Options[T]{{
|
||||
Imports: input.imports, Filesystem: input.filesystem, destination: input.destination.clone(), placementMode: input.placementMode,
|
||||
importDefaults: request.importDefaults, importDefaultsValidated: true,
|
||||
}})
|
||||
input.destination = inputOptions.destination
|
||||
normalized, inputDiagnostics := normalizeInput(*input, "")
|
||||
*input = normalized
|
||||
diagnostics = append(diagnostics, inputDiagnostics...)
|
||||
}
|
||||
}
|
||||
if !validOverlayName(request.overlay) {
|
||||
diagnostics = append(diagnostics, optionDiagnostic(CodeOptionsInvalid, "overlay name must contain only ASCII letters, digits, underscore, or hyphen"))
|
||||
}
|
||||
diagnostics = append(diagnostics, overlayOptionDiagnostics(request.overlay)...)
|
||||
if activeOverlay(request.overlay) {
|
||||
if request.overlayFilesystem == nil {
|
||||
diagnostics = append(diagnostics, optionDiagnostic(CodeOptionsInvalid, "selected overlay requires explicit filesystem context"))
|
||||
|
||||
Reference in New Issue
Block a user