Refactor ignore path handling in fsurls.go to improve whitespace trimming and add recursive matching for directory-like patterns. Enhance the logic to compile ignore lines more effectively, ensuring better support for various ignore scenarios.

This commit is contained in:
Luke Hagar
2025-09-13 03:42:12 +00:00
parent 7808f2337b
commit 3427464985

View File

@@ -649,7 +649,28 @@ func loadSlinkyIgnore(root string) (*ignore.GitIgnore, []string) {
} }
var ign *ignore.GitIgnore var ign *ignore.GitIgnore
if len(cfg.IgnorePaths) > 0 { if len(cfg.IgnorePaths) > 0 {
ign = ignore.CompileIgnoreLines(cfg.IgnorePaths...) var lines []string
for _, p := range cfg.IgnorePaths {
p = strings.TrimSpace(p)
if p == "" {
continue
}
lines = append(lines, p)
// Add a recursive variant to match anywhere
if !strings.HasPrefix(p, "**/") {
lines = append(lines, "**/"+p)
}
// If likely a directory name, add a catch-all under it
base := strings.TrimSuffix(p, "/")
if base != "" && !strings.ContainsAny(base, "*?[]") {
// Heuristic: directory-like if it has no '.' in the last segment or explicitly ends with '/'
last := filepath.Base(base)
if strings.HasSuffix(p, "/") || !strings.Contains(last, ".") {
lines = append(lines, "**/"+base+"/**")
}
}
}
ign = ignore.CompileIgnoreLines(lines...)
} }
var urlPatterns []string var urlPatterns []string
for _, p := range cfg.IgnoreURLs { for _, p := range cfg.IgnoreURLs {