Files
mediawatcher/internal/watcher/watcher.go
Javis Sullivan 0e0fe0e37c wip
2025-12-07 20:11:10 -05:00

35 lines
688 B
Go

package watcher
import (
"log"
"github.com/fsnotify/fsnotify"
)
type FileHandler func(path string)
func WatchDirs(dirs []string, handler FileHandler) error {
watcher, err := fsnotify.NewWatcher()
if err != nil {
return err
}
defer watcher.Close()
for _, d := range dirs {
if err := watcher.Add(d); err != nil {
return err
}
}
for {
select {
case event := <-watcher.Events:
if event.Op&(fsnotify.Create|fsnotify.Write) != 0 {
handler(event.Name)
}
case err := <-watcher.Errors:
log.Printf("Watcher error: %v\n", err)
}
}
}