Beispiel #1
0
func (l *Loop) runLoop(fs filesystem.Filespace, subPath string) error {
	list, err := fs.ReadDir(subPath)
	if err != nil {
		return err
	}
	for _, dir := range list {
		if dir.Name() == "." || dir.Name() == ".." {
			continue
		}
		newSubPath := subPath + dir.Name()
		if l.Filter != nil && !l.filter(fs, newSubPath, dir) {
			continue
		}
		if dir.IsDir() {
			if l.onDir != nil {
				if err = l.onDir(fs, newSubPath, dir); err != nil {
					return err
				}
			}
			if err = l.runLoop(fs, newSubPath+"/"); err != nil {
				return err
			}
		} else {
			if err = l.onFile(fs, newSubPath, dir); err != nil {
				return err
			}
		}
	}
	return nil
}