~ knotless Search/
↑↓ move↵ open⇧↵ all results
0
0
main
33 lines · 464 B Raw History
package diskusage

import (
	"io/fs"
	"path/filepath"
)

type Usage struct {
	Bytes int64
	Files int64
}

func Of(root string) (Usage, error) {
	var u Usage
	err := filepath.WalkDir(root, func(_ string, d fs.DirEntry, err error) error {
		if err != nil {
			if d == nil {
				return err
			}
			return nil
		}
		fi, err := d.Info()
		if err != nil {
			return nil
		}
		u.Bytes += allocated(fi)
		if !d.IsDir() {
			u.Files++
		}
		return nil
	})
	return u, err
}