Skip to content
Snippets Groups Projects
Verified Commit 896b5d75 authored by Volker Schukai's avatar Volker Schukai :alien:
Browse files

fix monitor directories not files

parent 1481483d
No related branches found
No related tags found
No related merge requests found
...@@ -95,7 +95,7 @@ func (s *Settings[C]) importFiles() { ...@@ -95,7 +95,7 @@ func (s *Settings[C]) importFiles() {
s.fileWatch.Lock() s.fileWatch.Lock()
// new files may have been added // new files may have been added
tmpWatchList := make(map[string]string) tmpWatchList := make(map[string]bool)
defer func() { defer func() {
s.fileWatch.watchList = tmpWatchList s.fileWatch.watchList = tmpWatchList
...@@ -123,7 +123,7 @@ func (s *Settings[C]) importFiles() { ...@@ -123,7 +123,7 @@ func (s *Settings[C]) importFiles() {
s.importStream(reader{s.files.format, r}) s.importStream(reader{s.files.format, r})
f.Close() f.Close()
tmpWatchList[fn] = fn tmpWatchList[fn] = true
} }
...@@ -138,7 +138,7 @@ func (s *Settings[C]) importFiles() { ...@@ -138,7 +138,7 @@ func (s *Settings[C]) importFiles() {
s.importStream(reader{f.format, r}) s.importStream(reader{f.format, r})
r.Close() r.Close()
tmpWatchList[f.path] = f.path tmpWatchList[f.path] = true
} }
} }
......
...@@ -13,7 +13,7 @@ import ( ...@@ -13,7 +13,7 @@ import (
type fileWatch struct { type fileWatch struct {
sync.Mutex sync.Mutex
watcher *fsnotify.Watcher watcher *fsnotify.Watcher
watchList map[string]string watchList map[string]bool
cancelWatch chan bool cancelWatch chan bool
onWatch bool onWatch bool
} }
......
...@@ -5,6 +5,8 @@ package configuration ...@@ -5,6 +5,8 @@ package configuration
import ( import (
"github.com/fsnotify/fsnotify" "github.com/fsnotify/fsnotify"
"os"
"path"
) )
func (s *Settings[C]) initWatch() *Settings[C] { func (s *Settings[C]) initWatch() *Settings[C] {
...@@ -97,7 +99,19 @@ func (s *Settings[C]) Watch() *Settings[C] { ...@@ -97,7 +99,19 @@ func (s *Settings[C]) Watch() *Settings[C] {
// add all files to the watch list // add all files to the watch list
for file := range s.fileWatch.watchList { for file := range s.fileWatch.watchList {
err := s.fileWatch.watcher.Add(file)
fileInfo, err := os.Stat(file)
if err != nil {
s.errors = append(s.errors, err)
continue
}
if fileInfo.IsDir() {
err = s.fileWatch.watcher.Add(file)
} else {
err = s.fileWatch.watcher.Add(path.Dir(file))
}
if err != nil { if err != nil {
s.errors = append(s.errors, err) s.errors = append(s.errors, err)
} }
...@@ -119,6 +133,11 @@ func (s *Settings[C]) Watch() *Settings[C] { ...@@ -119,6 +133,11 @@ func (s *Settings[C]) Watch() *Settings[C] {
return return
} }
_, exist := s.fileWatch.watchList[event.Name]
if !exist {
continue
}
if event.Op&fsnotify.Write == fsnotify.Write { if event.Op&fsnotify.Write == fsnotify.Write {
s.Import() s.Import()
} else if event.Op&fsnotify.Remove == fsnotify.Remove { } else if event.Op&fsnotify.Remove == fsnotify.Remove {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment