aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan DeMasi <jonathan.demasi@colorado.edu>2020-06-22 12:29:48 -0600
committerJonathan DeMasi <jonathan.demasi@colorado.edu>2020-06-22 12:29:48 -0600
commitdca9e03df77ceef4d086b791dfda7ea7ed77392f (patch)
treef85a278604aaeb8641cf7fd956bdf596d74bd052
parentb3f01e2aa60fde099c2b77cab40ae4f0381f0ce0 (diff)
downloadsnippets-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-xgolang/recursiveWatcher/recursiveWatcherbin0 -> 2363299 bytes
-rw-r--r--golang/recursiveWatcher/recursiveWatcher.go59
2 files changed, 59 insertions, 0 deletions
diff --git a/golang/recursiveWatcher/recursiveWatcher b/golang/recursiveWatcher/recursiveWatcher
new file mode 100755
index 0000000..bcd539b
--- /dev/null
+++ b/golang/recursiveWatcher/recursiveWatcher
Binary files differ
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
+}