diff --git a/search/search.go b/search/search.go index 68f1cb8b..375d7414 100644 --- a/search/search.go +++ b/search/search.go @@ -18,16 +18,23 @@ type searchOptions struct { func Search(fs afero.Fs, scope, query string, checker rules.Checker, found func(path string, f os.FileInfo) error) error { search := parseSearch(query) - return afero.Walk(fs, scope, func(path string, f os.FileInfo, err error) error { - path = strings.TrimPrefix(path, "/") - path = strings.Replace(path, "\\", "/", -1) + scope = strings.Replace(scope, "\\", "/", -1) + scope = strings.TrimPrefix(scope, "/") + scope = strings.TrimSuffix(scope, "/") + scope = "/" + scope + "/" - if !checker.Check(path) { + return afero.Walk(fs, scope, func(originalPath string, f os.FileInfo, err error) error { + originalPath = strings.Replace(originalPath, "\\", "/", -1) + originalPath = strings.TrimPrefix(originalPath, "/") + originalPath = "/" + originalPath + path := originalPath + + if path == scope { return nil } - if !search.CaseSensitive { - path = strings.ToLower(path) + if !checker.Check(path) { + return nil } if !search.CaseSensitive { @@ -52,7 +59,7 @@ func Search(fs afero.Fs, scope, query string, checker rules.Checker, found func( if len(search.Terms) > 0 { for _, term := range search.Terms { if strings.Contains(path, term) { - return found(strings.TrimPrefix(path, scope), f) + return found(strings.TrimPrefix(originalPath, scope), f) } } }