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  }