Expose import defaults and selection evidence
This commit is contained in:
31
lifecycle.go
31
lifecycle.go
@@ -72,6 +72,28 @@ const (
|
||||
SourceVersionModeRequired
|
||||
)
|
||||
|
||||
// ImportDefaults supplies load-wide defaults for enabled import declarations.
|
||||
// Each field applies independently and an explicit declaration value takes
|
||||
// precedence. Nil boolean fields are unspecified and leave the library defaults
|
||||
// in effect: Required false, Follow true, Hidden true, and Recursive false.
|
||||
// Pattern applies to directory searches; nil leaves filenames unrestricted,
|
||||
// while a non-nil empty slice selects none. Defaults apply to main, underlay,
|
||||
// and transitive imports, not selected overlays.
|
||||
type ImportDefaults struct {
|
||||
// Required defaults absence handling. For path, true requires every named
|
||||
// file; for dir and glob, true requires at least one selected file.
|
||||
Required *bool
|
||||
// Follow controls discovered symbolic links for directory and glob search.
|
||||
Follow *bool
|
||||
// Hidden controls discovery of hidden files and directories.
|
||||
Hidden *bool
|
||||
// Recursive controls descendant traversal for directory searches.
|
||||
Recursive *bool
|
||||
// Pattern replaces the library's unrestricted filename matching for directory
|
||||
// searches unless a declaration supplies its own pattern.
|
||||
Pattern []string
|
||||
}
|
||||
|
||||
// Options contains the application definition and per-load input selections.
|
||||
// Imports enables explicit import declarations; Overlay selects one fixed overlay;
|
||||
// Overrides contains only values explicitly supplied by an application CLI.
|
||||
@@ -86,8 +108,12 @@ type Options[T any] struct {
|
||||
Destination Path
|
||||
// PlacementMode defaults to mapping placement; unknown values and root item
|
||||
// placement fail before acquisition.
|
||||
PlacementMode PlacementMode
|
||||
Imports bool
|
||||
PlacementMode PlacementMode
|
||||
Imports bool
|
||||
// ImportDefaults supplies one load-wide default policy for every enabled
|
||||
// declaration, including transitive imports. Each field is independently
|
||||
// overridden by an explicit declaration value.
|
||||
ImportDefaults ImportDefaults
|
||||
Overlay string
|
||||
Filesystem *FilesystemContext
|
||||
Overrides []Override
|
||||
@@ -301,6 +327,7 @@ func toEngineOptions[T any](options Options[T]) engine.Options[T] {
|
||||
SourceVersionMode: engine.SourceVersionModeFromFacade(uint8(options.SourceVersionMode)),
|
||||
}
|
||||
result = engine.OptionsWithPlacement(result, toEnginePath(options.Destination.clone()), uint8(options.PlacementMode))
|
||||
result = engine.OptionsWithImportDefaults(result, toEngineImportDefaults(options.ImportDefaults))
|
||||
if options.Filesystem != nil {
|
||||
result.Filesystem = toEngineFilesystemContext(options.Filesystem)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user