github.com/dennys-bd/goals@v0.0.0-20210328114421-251a004d41e3/shortcuts/os/dir.go (about)

     1  package os
     2  
     3  import (
     4  	"io"
     5  	"os"
     6  
     7  	errs "github.com/dennys-bd/goals/shortcuts/errors"
     8  )
     9  
    10  // Exists verify is a file or dir exists
    11  func Exists(path string) bool {
    12  	if path == "" {
    13  		return false
    14  	}
    15  	_, err := os.Stat(path)
    16  	if err == nil {
    17  		return true
    18  	}
    19  	if !os.IsNotExist(err) {
    20  		errs.Ex(err)
    21  	}
    22  	return false
    23  }
    24  
    25  // IsEmpty checks if a given path is empty.
    26  // Hidden files in path are ignored.
    27  func IsEmpty(path string) bool {
    28  	fi, err := os.Stat(path)
    29  	if err != nil {
    30  		errs.Ex(err)
    31  	}
    32  
    33  	if !fi.IsDir() {
    34  		return fi.Size() == 0
    35  	}
    36  
    37  	f, err := os.Open(path)
    38  	if err != nil {
    39  		errs.Ex(err)
    40  	}
    41  	defer f.Close()
    42  
    43  	names, err := f.Readdirnames(-1)
    44  	if err != nil && err != io.EOF {
    45  		errs.Ex(err)
    46  	}
    47  
    48  	for _, name := range names {
    49  		if len(name) > 0 && name[0] != '.' {
    50  			return false
    51  		}
    52  	}
    53  	return true
    54  }