aboutsummaryrefslogtreecommitdiff
path: root/storage/storage_fs.go
blob: 35ce58b72df37cdf61ca07ae6a5a4ca20099bf6f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package storage

import (
	"os"
	"path/filepath"
)

type FileSystem struct {
	root string
}

func WalkFolder(folder string, walkMode WalkMode) <-chan string {
	c := make(chan string)

	go func(folder string, c chan string) {
		filepath.Walk(folder, func(path string, info os.FileInfo, err error) error {
			file, _ := os.Open(path)
			defer file.Close()
			fileInfo, _ := file.Stat()

			switch walkMode {
			case Folder:
				if fileInfo.IsDir() {
					c <- path
				}
			case File:
				if !fileInfo.IsDir() {
					c <- path
				}
			case FileFolder:
				c <- path
			}
			return nil
		})
		close(c)

	}(folder, c)

	return c
}