github.com/scottcagno/storage@v1.8.0/pkg/filesystem/util.go (about)

     1  package filesystem
     2  
     3  import (
     4  	"io/fs"
     5  	"io/ioutil"
     6  	"path/filepath"
     7  )
     8  
     9  func List(dir string, fn func(f fs.FileInfo) error) error {
    10  	files, err := ioutil.ReadDir(dir)
    11  	if err != nil {
    12  		return err
    13  	}
    14  	for _, f := range files {
    15  		err = fn(f)
    16  		if err != nil {
    17  			if err == fs.SkipDir {
    18  				continue
    19  			}
    20  			return nil
    21  		}
    22  	}
    23  	return nil
    24  }
    25  
    26  func Walk(dir string, fn func(f fs.FileInfo) error) error {
    27  	err := filepath.Walk(dir,
    28  		func(path string, f fs.FileInfo, err error) error {
    29  			if err != nil {
    30  				return err
    31  			}
    32  			err = fn(f)
    33  			if err != nil {
    34  				if err == fs.SkipDir {
    35  					return fs.SkipDir
    36  				}
    37  				return err
    38  			}
    39  			return nil
    40  		})
    41  	if err != nil {
    42  		return err
    43  	}
    44  	return nil
    45  }