PiwigoDirectoryUploader/internal/pkg/localFileStructure/filesystemScanner.go

50 lines
912 B
Go
Raw Normal View History

2019-02-23 00:58:32 +01:00
package localFileStructure
import (
"github.com/sirupsen/logrus"
2019-02-23 00:58:32 +01:00
"os"
"path/filepath"
"strings"
2019-02-23 00:58:32 +01:00
)
func ScanLocalFileStructure(path string) (map[string]*FilesystemNode, error) {
fileMap := make(map[string]*FilesystemNode)
relativeRoot := filepath.Base(path) + "/"
numberOfDirectories := 0
numberOfImages := 0
2019-02-23 00:58:32 +01:00
err := filepath.Walk(path, func(p string, info os.FileInfo, err error) error {
if path == p {
return nil
}
//TODO: Only allow jpg and png files here
key := strings.Replace(p, relativeRoot, "", 1)
fileMap[p] = &FilesystemNode{
Key: key,
Name: info.Name(),
IsDir: info.IsDir(),
2019-02-23 00:58:32 +01:00
}
if info.IsDir() {
numberOfDirectories += 1
} else {
numberOfImages += 1
}
2019-02-23 22:02:12 +01:00
return nil
2019-02-23 00:58:32 +01:00
})
if err != nil {
2019-02-24 21:38:28 +01:00
return nil, err
2019-02-23 00:58:32 +01:00
}
logrus.Infof("Found %d directories and %d images on the local filesystem", numberOfDirectories, numberOfImages)
2019-02-24 21:38:28 +01:00
return fileMap, nil
2019-02-23 00:58:32 +01:00
}