Wire load lifecycle through input acquisition
This commit is contained in:
@@ -88,59 +88,27 @@ func cloneAcquisitionScopes(scopes []acquisitionScope) []acquisitionScope {
|
||||
return cloned
|
||||
}
|
||||
|
||||
func assembleBaseInput[T any](source Source, options Options[T]) (assembledInput, []Diagnostic) {
|
||||
return assembleBaseInputTracked(source, options, Path{}, &importAccounting{}, nil, nil)
|
||||
}
|
||||
|
||||
func assembleBaseInputTracked[T any](source Source, options Options[T], destination Path, accounting *importAccounting, visited map[resourceIdentity]importRoute, hostToken *namespaceToken) (assembledInput, []Diagnostic) {
|
||||
return assembleBaseInputTrackedWithVersion(source, options, destination, accounting, visited, hostToken, nil)
|
||||
}
|
||||
|
||||
func assembleBaseInputTrackedWithVersion[T any](source Source, options Options[T], destination Path, accounting *importAccounting, visited map[resourceIdentity]importRoute, hostToken *namespaceToken, versionState *sourceVersionState) (assembledInput, []Diagnostic) {
|
||||
return assembleBaseInputTrackedForRole(source, options, destination, accounting, visited, hostToken, versionState, sourceVersionMain)
|
||||
}
|
||||
|
||||
func registerAcquiredSource(source Source, context *FilesystemContext, info *SourceInfo, visited map[resourceIdentity]importRoute, hostToken *namespaceToken) *Diagnostic {
|
||||
if visited == nil || info == nil || info.Path == "" {
|
||||
return nil
|
||||
}
|
||||
identity := resourceIdentity{namespace: hostToken, path: info.Path}
|
||||
if source.kind == sourceFilesystem {
|
||||
identity.namespace = source.namespace.token
|
||||
} else if context != nil && context.FS != nil {
|
||||
identity.namespace = context.FS.namespace.token
|
||||
}
|
||||
if previous, repeated := visited[identity]; repeated {
|
||||
value := importRepeatedDiagnostic(Location{SourceID: info.ID}, previous, importRoute{})
|
||||
return &value
|
||||
}
|
||||
visited[identity] = importRoute{canonical: info.Path}
|
||||
return nil
|
||||
}
|
||||
|
||||
func applyInputLayers[T any](source Source, options Options[T], input assembledInput) (assembledInput, []Diagnostic) {
|
||||
if !activeOverlay(options.Overlay) {
|
||||
func applyInputLayers(source Source, filesystem *FilesystemContext, overlay string, protectionRule *VersionRule, policy sequencePolicy, input assembledInput) (assembledInput, []Diagnostic) {
|
||||
if !activeOverlay(overlay) {
|
||||
return input, nil
|
||||
}
|
||||
composition, diagnostics := compositionForInputWithPolicy(input, options.sequencePolicy)
|
||||
composition, diagnostics := compositionForInputWithPolicy(input, policy)
|
||||
if len(diagnostics) != 0 {
|
||||
return input, diagnostics
|
||||
}
|
||||
assembly := newAssemblyAccumulator(composition)
|
||||
if activeOverlay(options.Overlay) {
|
||||
input.sources, diagnostics = loadSelectedOverlayIntoWithVersion(
|
||||
source, options.Filesystem, input.parsed, assembly, input.sources,
|
||||
options.Overlay, options.Definition.Version, defaultImportLimits(), input.versionState, options.sequencePolicy,
|
||||
)
|
||||
if len(diagnostics) != 0 {
|
||||
return input, diagnostics
|
||||
}
|
||||
contexts, diagnostic := contextsForAcquiredSources(source, options.Filesystem, input.parsed.source, input.sources[len(input.sources)-1:])
|
||||
if diagnostic != nil {
|
||||
return input, []Diagnostic{*diagnostic}
|
||||
}
|
||||
mergeResourceContexts(&input.contexts, contexts)
|
||||
input.sources, diagnostics = loadSelectedOverlayIntoWithVersion(
|
||||
source, filesystem, input.parsed, assembly, input.sources,
|
||||
overlay, protectionRule, defaultImportLimits(), input.versionState, policy,
|
||||
)
|
||||
if len(diagnostics) != 0 {
|
||||
return input, diagnostics
|
||||
}
|
||||
contexts, diagnostic := contextsForAcquiredSources(source, filesystem, input.parsed.source, input.sources[len(input.sources)-1:])
|
||||
if diagnostic != nil {
|
||||
return input, []Diagnostic{*diagnostic}
|
||||
}
|
||||
mergeResourceContexts(&input.contexts, contexts)
|
||||
input.composition = assembly.current
|
||||
input.document = assembly.current.root
|
||||
return input, nil
|
||||
|
||||
Reference in New Issue
Block a user