internal/utils/remove_everything.go (29 lines of code) (raw):

package utils import ( "fmt" "os" "path/filepath" ) // RemoveEverythingUnder removes everything under a path. // // The top level directory entries whose name matches any "skipps" will be skipped. func RemoveEverythingUnder(path string, skipps ...string) error { // #nosec G304 dir, err := os.Open(path) if err != nil { return fmt.Errorf("failed to read directory %s: %v", path, err) } skipMap := map[string]bool{} for _, v := range skipps { skipMap[v] = true } entries, _ := dir.Readdirnames(0) for _, entry := range entries { if skipMap[entry] { continue } if err := os.RemoveAll(filepath.Join(path, entry)); err != nil { return fmt.Errorf("failed to remove %s: %v", entry, err) } } if err := dir.Close(); err != nil { return fmt.Errorf("closing dir %s: %v", path, err) } return nil }