Пример #1
0
func listCollect(fs vfs.Filesystem, realPath, virtualPath string, filter FilterFile) ([]string, error) {
	files := []string{}
	contents, err := fs.ReadDir(realPath)
	if err != nil {
		return nil, err
	}
	sort.Sort(byName(contents))
	for _, content := range contents {
		if content.IsDir() {
			if filter(virtualPath+content.Name(), true) {
				subfiles, err := listCollect(fs, realPath+content.Name()+"/", virtualPath+content.Name()+"/", filter)
				if err != nil {
					return nil, err
				}
				files = append(files, subfiles...)
			}
		} else {
			if filter(virtualPath+content.Name(), false) {
				files = append(files, virtualPath+content.Name())
			}
		}
	}
	return files, nil
}