github.com/kyleu/dbaudit@v0.0.2-0.20240321155047-ff2f2c940496/app/lib/filesystem/fsignore.go (about) 1 // Package filesystem - Content managed by Project Forge, see [projectforge.md] for details. 2 package filesystem 3 4 import ( 5 "strings" 6 7 "github.com/kyleu/dbaudit/app/util" 8 ) 9 10 var defaultIgnore = []string{".DS_Store$", "^.git/", "^.idea/", "^build/", "^client/node_modules", ".html.go$", ".sql.go$"} 11 12 func buildIgnore(ign []string) []string { 13 ret := util.NewStringSlice(append([]string{}, defaultIgnore...)) 14 ret.Push(ign...) 15 return ret.Slice 16 } 17 18 const ( 19 keyPrefix = "^" 20 keySuffix = "$" 21 ) 22 23 func checkIgnore(ignore []string, fp string) bool { 24 for _, i := range ignore { 25 switch { 26 case strings.HasPrefix(i, keyPrefix): 27 i = strings.TrimPrefix(i, keyPrefix) 28 if fp == strings.TrimSuffix(i, "/") || fp == strings.TrimSuffix(i, "\\") { 29 return true 30 } 31 if strings.HasPrefix(fp, i) { 32 return true 33 } 34 case strings.HasSuffix(i, keySuffix): 35 if strings.HasSuffix(fp, strings.TrimSuffix(i, keySuffix)) { 36 return true 37 } 38 case fp == i: 39 return true 40 } 41 } 42 return false 43 }