78 lines
1.4 KiB
Go
78 lines
1.4 KiB
Go
|
package parser
|
||
|
|
||
|
import (
|
||
|
"os"
|
||
|
"path/filepath"
|
||
|
"strings"
|
||
|
|
||
|
"github.com/gobuffalo/packr/v2/file/resolver"
|
||
|
"github.com/gobuffalo/packr/v2/plog"
|
||
|
)
|
||
|
|
||
|
var DefaultIgnoredFolders = []string{".", "_", "vendor", "node_modules", "_fixtures", "testdata"}
|
||
|
|
||
|
func IsProspect(path string, ignore ...string) (status bool) {
|
||
|
// plog.Debug("parser", "IsProspect", "path", path, "ignore", ignore)
|
||
|
defer func() {
|
||
|
if status {
|
||
|
plog.Debug("parser", "IsProspect (TRUE)", "path", path, "status", status)
|
||
|
}
|
||
|
}()
|
||
|
if path == "." {
|
||
|
return true
|
||
|
}
|
||
|
|
||
|
ext := filepath.Ext(path)
|
||
|
dir := filepath.Dir(path)
|
||
|
|
||
|
fi, _ := os.Stat(path)
|
||
|
if fi != nil {
|
||
|
if fi.IsDir() {
|
||
|
dir = filepath.Base(path)
|
||
|
} else {
|
||
|
if len(ext) > 0 {
|
||
|
dir = filepath.Base(filepath.Dir(path))
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
path = strings.ToLower(path)
|
||
|
dir = strings.ToLower(dir)
|
||
|
|
||
|
if strings.HasSuffix(path, "-packr.go") {
|
||
|
return false
|
||
|
}
|
||
|
|
||
|
if strings.HasSuffix(path, "_test.go") {
|
||
|
return false
|
||
|
}
|
||
|
|
||
|
ignore = append(ignore, DefaultIgnoredFolders...)
|
||
|
for i, x := range ignore {
|
||
|
ignore[i] = strings.TrimSpace(strings.ToLower(x))
|
||
|
}
|
||
|
|
||
|
parts := strings.Split(resolver.OsPath(path), string(filepath.Separator))
|
||
|
if len(parts) == 0 {
|
||
|
return false
|
||
|
}
|
||
|
|
||
|
for _, i := range ignore {
|
||
|
for _, p := range parts {
|
||
|
if strings.HasPrefix(p, i) {
|
||
|
return false
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
un := filepath.Base(path)
|
||
|
if len(ext) != 0 {
|
||
|
un = filepath.Base(filepath.Dir(path))
|
||
|
}
|
||
|
if strings.HasPrefix(un, "_") {
|
||
|
return false
|
||
|
}
|
||
|
|
||
|
return ext == ".go"
|
||
|
}
|