Clarify import default field names

This commit is contained in:
2026-10-27 15:07:15 +00:00
parent 791cf16136
commit 9ac0053590
4 changed files with 18 additions and 10 deletions

View File

@@ -82,8 +82,8 @@ func toEngineOverrides(values []Override) []engine.Override {
func toEngineImportDefaults(value ImportDefaults) engine.ImportDefaults { func toEngineImportDefaults(value ImportDefaults) engine.ImportDefaults {
return engine.ImportDefaults{ return engine.ImportDefaults{
Required: value.Required, Required: value.Required,
Follow: value.Follow, Follow: value.FollowSymlinks,
Hidden: value.Hidden, Hidden: value.IncludeHidden,
Recursive: value.Recursive, Recursive: value.Recursive,
Pattern: value.Pattern, Pattern: value.Pattern,
} }

View File

@@ -1,6 +1,6 @@
# Pre-v1 Public API Cleanup Implementation Plan # Pre-v1 Public API Cleanup Implementation Plan
Status: in progress; Stages 1–3 are complete and Stages 4–11 are pending. Status: in progress; Stages 1–4 are complete and Stages 5–11 are pending.
Baseline: `07e4ae5d9236935389e81b207d4a8f00543fafce`. Baseline: `07e4ae5d9236935389e81b207d4a8f00543fafce`.
Audience: a Luna coding agent executing the stages sequentially. Audience: a Luna coding agent executing the stages sequentially.
@@ -198,7 +198,7 @@ placement, partial evidence, and detachment retain established behavior.
## Stage 4 — Make Go Import Defaults Self-Describing ## Stage 4 — Make Go Import Defaults Self-Describing
Status: pending. Implements N6. Status: complete. Implements N6.
1. Replace root `ImportDefaults.Follow` with `FollowSymlinks` and `Hidden` 1. Replace root `ImportDefaults.Follow` with `FollowSymlinks` and `Hidden`
with `IncludeHidden`, preserving `*bool` and the other three fields. with `IncludeHidden`, preserving `*bool` and the other three fields.

View File

@@ -93,7 +93,8 @@ main: main
func TestImportDefaultsPreserveEmptyPatternAndRequiredness(t *testing.T) { func TestImportDefaultsPreserveEmptyPatternAndRequiredness(t *testing.T) {
type config struct { type config struct {
Value string `yaml:"value"` Value string `yaml:"value"`
Hidden string `yaml:"hidden"`
} }
directory := t.TempDir() directory := t.TempDir()
mainPath := writeFacadeImportFile(t, directory, "main.yml", `configkit: mainPath := writeFacadeImportFile(t, directory, "main.yml", `configkit:
@@ -101,11 +102,17 @@ func TestImportDefaultsPreserveEmptyPatternAndRequiredness(t *testing.T) {
- dir: snippets - dir: snippets
`) `)
writeFacadeImportFile(t, directory, "snippets/value.cfg", "value: imported\n") writeFacadeImportFile(t, directory, "snippets/value.cfg", "value: imported\n")
writeFacadeImportFile(t, directory, "snippets/.hidden.cfg", "hidden: imported\n")
unrestricted, err := Load(File(mainPath), Options[config]{Imports: true}) unrestricted, err := Load(File(mainPath), Options[config]{Imports: true})
if err != nil || unrestricted.Config.Value != "imported" { if err != nil || unrestricted.Config.Value != "imported" {
t.Fatalf("unspecified pattern = %#v, %v", unrestricted, err) t.Fatalf("unspecified pattern = %#v, %v", unrestricted, err)
} }
includeHidden := false
visibleOnly, err := Load(File(mainPath), Options[config]{Imports: true, ImportDefaults: ImportDefaults{IncludeHidden: &includeHidden}})
if err != nil || visibleOnly.Config.Value != "imported" || visibleOnly.Config.Hidden != "" {
t.Fatalf("hidden-file default = %#v, %v", visibleOnly, err)
}
empty, err := Load(File(mainPath), Options[config]{Imports: true, ImportDefaults: ImportDefaults{Pattern: []string{}}}) empty, err := Load(File(mainPath), Options[config]{Imports: true, ImportDefaults: ImportDefaults{Pattern: []string{}}})
if err != nil || empty.Config.Value != "" { if err != nil || empty.Config.Value != "" {
t.Fatalf("empty pattern = %#v, %v", empty, err) t.Fatalf("empty pattern = %#v, %v", empty, err)

View File

@@ -62,7 +62,8 @@ const (
// ImportDefaults supplies load-wide defaults for enabled import declarations. // ImportDefaults supplies load-wide defaults for enabled import declarations.
// Each field applies independently and an explicit declaration value takes // Each field applies independently and an explicit declaration value takes
// precedence. Nil boolean fields are unspecified and leave the library defaults // precedence. Nil boolean fields are unspecified and leave the library defaults
// in effect: Required false, Follow true, Hidden true, and Recursive false. // in effect: Required false, FollowSymlinks true, IncludeHidden true, and
// Recursive false.
// Pattern applies to directory searches; nil leaves filenames unrestricted, // Pattern applies to directory searches; nil leaves filenames unrestricted,
// while a non-nil empty slice selects none. Defaults apply to main, underlay, // while a non-nil empty slice selects none. Defaults apply to main, underlay,
// and transitive imports, not selected overlays. Load calls snapshot the // and transitive imports, not selected overlays. Load calls snapshot the
@@ -71,10 +72,10 @@ type ImportDefaults struct {
// Required defaults absence handling. For path, true requires every named // Required defaults absence handling. For path, true requires every named
// file; for dir and glob, true requires at least one selected file. // file; for dir and glob, true requires at least one selected file.
Required *bool Required *bool
// Follow controls discovered symbolic links for directory and glob search. // FollowSymlinks controls discovered symbolic links for directory and glob search.
Follow *bool FollowSymlinks *bool
// Hidden controls discovery of hidden files and directories. // IncludeHidden controls discovery of hidden files and directories.
Hidden *bool IncludeHidden *bool
// Recursive controls descendant traversal for directory searches. // Recursive controls descendant traversal for directory searches.
Recursive *bool Recursive *bool
// Pattern replaces the library's unrestricted filename matching for directory // Pattern replaces the library's unrestricted filename matching for directory