in cli/util/file.go [51:95]
func FindFilesWithPattern(dir string, pattern string, skipPaths []string) ([]string, error) {
f, err := os.Stat(dir)
if err != nil {
return nil, fmt.Errorf("no such dir: %w", err)
}
if !f.IsDir() {
return nil, fmt.Errorf("expected dir %s: got file", dir)
}
re, err := regexp.Compile(pattern)
if err != nil {
return nil, fmt.Errorf("invalid regex: %w", err)
}
filePaths := []string{}
err = filepath.WalkDir(dir, func(path string, file fs.DirEntry, err error) error {
if err != nil {
return err
}
if !re.MatchString(filepath.Base(path)) {
return nil
}
for _, p := range skipPaths {
if strings.Contains(path, p) {
return nil
}
}
if !file.IsDir() {
filePaths = append(filePaths, path)
}
return nil
})
if err != nil {
fmt.Printf("error accessing the path: %q. error: %v", dir, err)
return nil, err
}
return filePaths, nil
}