introduced excluded directories
This commit is contained in:
parent
0681c6891b
commit
85436a47e7
5
main.go
5
main.go
@ -20,6 +20,7 @@ var ( // flags
|
|||||||
FlagSourceDir = envvars.String("SOURCE_PATH", "/video")
|
FlagSourceDir = envvars.String("SOURCE_PATH", "/video")
|
||||||
FlagTargetDir = envvars.String("TARGET_PATH", "/audio")
|
FlagTargetDir = envvars.String("TARGET_PATH", "/audio")
|
||||||
FlagCacheFile = envvars.String("CACHE_FILE", "/hashes.bin")
|
FlagCacheFile = envvars.String("CACHE_FILE", "/hashes.bin")
|
||||||
|
FlagExcludeFiles = envvars.StringSlice("EXCLUDE_FILES", ":", []string{".songs"})
|
||||||
FlagUpdateCacheFileInterval = envvars.Duration("UPDATE_CACHE_FILE_INTERVAL", 10*time.Second)
|
FlagUpdateCacheFileInterval = envvars.Duration("UPDATE_CACHE_FILE_INTERVAL", 10*time.Second)
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -33,6 +34,10 @@ func main() {
|
|||||||
FlagTargetDir = AbsPath(FlagTargetDir)
|
FlagTargetDir = AbsPath(FlagTargetDir)
|
||||||
FlagCacheFile = AbsPath(FlagCacheFile)
|
FlagCacheFile = AbsPath(FlagCacheFile)
|
||||||
|
|
||||||
|
for i := 0; i < len(FlagExcludeFiles); i++ {
|
||||||
|
FlagExcludeFiles[i] = filepath.Join(FlagSourceDir, FlagExcludeFiles[i])
|
||||||
|
}
|
||||||
|
|
||||||
InitCache()
|
InitCache()
|
||||||
|
|
||||||
ops := []fsnotify.Op{
|
ops := []fsnotify.Op{
|
||||||
|
13
utils.go
13
utils.go
@ -4,6 +4,7 @@ import (
|
|||||||
"crypto/sha512"
|
"crypto/sha512"
|
||||||
"io"
|
"io"
|
||||||
"os"
|
"os"
|
||||||
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
func HashFile(path string) ([sha512.Size]byte, error) {
|
func HashFile(path string) ([sha512.Size]byte, error) {
|
||||||
@ -23,3 +24,15 @@ func HashFile(path string) ([sha512.Size]byte, error) {
|
|||||||
copy(res[:], hash)
|
copy(res[:], hash)
|
||||||
return res, nil
|
return res, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func PathIsExcluded(path string) bool {
|
||||||
|
path = AbsPath(path)
|
||||||
|
|
||||||
|
for _, excludedPath := range FlagExcludeFiles {
|
||||||
|
if strings.HasPrefix(path, AbsPath(excludedPath)) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
@ -44,6 +44,11 @@ func WatchDirectory(ctx context.Context, path string, op ...fsnotify.Op) (<-chan
|
|||||||
|
|
||||||
for _, file := range files {
|
for _, file := range files {
|
||||||
path := filepath.Join(path, file.Name())
|
path := filepath.Join(path, file.Name())
|
||||||
|
|
||||||
|
if PathIsExcluded(path) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
if file.IsDir() {
|
if file.IsDir() {
|
||||||
//fmt.Println("watching directory", path)
|
//fmt.Println("watching directory", path)
|
||||||
watcher.Add(path)
|
watcher.Add(path)
|
||||||
@ -66,6 +71,10 @@ func WatchDirectory(ctx context.Context, path string, op ...fsnotify.Op) (<-chan
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if PathIsExcluded(event.Name) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
if fi, err := os.Stat(event.Name); err == nil && fi.IsDir() {
|
if fi, err := os.Stat(event.Name); err == nil && fi.IsDir() {
|
||||||
if event.Op&fsnotify.Create == fsnotify.Create {
|
if event.Op&fsnotify.Create == fsnotify.Create {
|
||||||
//fmt.Println("watching directory", event.Name)
|
//fmt.Println("watching directory", event.Name)
|
||||||
|
Loading…
Reference in New Issue
Block a user