internal/utils/dir_is_empty.go (33 lines of code) (raw):
package utils
import (
"fmt"
"io"
"os"
)
func DirIsEmpty(path string) (bool, error) {
stat, err := os.Stat(path)
if os.IsNotExist(err) {
return false, fmt.Errorf("the path %q doesn't exist", path)
}
if !stat.IsDir() {
return false, fmt.Errorf("the path %q is not a directory", path)
}
// #nosec G304
dir, err := os.Open(path)
if err != nil {
return false, err
}
_, err = dir.Readdirnames(1)
if err != nil {
if err == io.EOF {
if err := dir.Close(); err != nil {
return false, fmt.Errorf("closing dir %s: %v", path, err)
}
return true, nil
}
return false, err
}
if err := dir.Close(); err != nil {
return false, fmt.Errorf("closing dir %s: %v", path, err)
}
return false, nil
}