diff options
author | Jonathan DeMasi <jonathan.demasi@colorado.edu> | 2020-06-22 12:29:48 -0600 |
---|---|---|
committer | Jonathan DeMasi <jonathan.demasi@colorado.edu> | 2020-06-22 12:29:48 -0600 |
commit | dca9e03df77ceef4d086b791dfda7ea7ed77392f (patch) | |
tree | f85a278604aaeb8641cf7fd956bdf596d74bd052 | |
parent | b3f01e2aa60fde099c2b77cab40ae4f0381f0ce0 (diff) | |
download | snippets-dca9e03df77ceef4d086b791dfda7ea7ed77392f.tar snippets-dca9e03df77ceef4d086b791dfda7ea7ed77392f.tar.gz snippets-dca9e03df77ceef4d086b791dfda7ea7ed77392f.tar.bz2 snippets-dca9e03df77ceef4d086b791dfda7ea7ed77392f.tar.lz snippets-dca9e03df77ceef4d086b791dfda7ea7ed77392f.tar.xz snippets-dca9e03df77ceef4d086b791dfda7ea7ed77392f.tar.zst snippets-dca9e03df77ceef4d086b791dfda7ea7ed77392f.zip |
add recursive watcher test
-rwxr-xr-x | golang/recursiveWatcher/recursiveWatcher | bin | 0 -> 2363299 bytes | |||
-rw-r--r-- | golang/recursiveWatcher/recursiveWatcher.go | 59 |
2 files changed, 59 insertions, 0 deletions
diff --git a/golang/recursiveWatcher/recursiveWatcher b/golang/recursiveWatcher/recursiveWatcher Binary files differnew file mode 100755 index 0000000..bcd539b --- /dev/null +++ b/golang/recursiveWatcher/recursiveWatcher diff --git a/golang/recursiveWatcher/recursiveWatcher.go b/golang/recursiveWatcher/recursiveWatcher.go new file mode 100644 index 0000000..3d26292 --- /dev/null +++ b/golang/recursiveWatcher/recursiveWatcher.go @@ -0,0 +1,59 @@ +package main + +import ( + "github.com/fsnotify/fsnotify" + "log" + "os" + "time" +) + +// IsDirectory - Returns a true/false if file is a directory +func IsDirectory(path string) bool { + fileInfo, err := os.Stat(path) + if err != nil { + log.Fatal(err) + } + return fileInfo.IsDir() +} + +func main() { + watcher, err := fsnotify.NewWatcher() + if err != nil { + log.Fatal(err) + } + defer watcher.Close() + done := make(chan bool) + + go func() { + for { + select { + case event, ok := <-watcher.Events: + if !ok { + return + } + log.Println("event:", event) + if IsDirectory(event.Name) == true { + log.Println("Adding new directory to watch: ", event.Name) + watcher.Add(event.Name) + } + if event.Op&fsnotify.Write == fsnotify.Write { + log.Println("modified file:", event.Name) + } + case err, ok := <-watcher.Errors: + if !ok { + return + } + log.Println("error:", err) + case <-time.After(10 * time.Second): + log.Println("TIMEOUT!") + close(done) + } + } + }() + + err = watcher.Add(os.Args[1]) + if err != nil { + log.Fatal(err) + } + <-done +} |