diff options
author | lalizita <laislima98@hotmail.com> | 2023-01-09 22:41:16 -0300 |
---|---|---|
committer | lalizita <laislima98@hotmail.com> | 2023-01-09 22:41:16 -0300 |
commit | f3afa472c9296a9df176a6015ce33f0cab6e6984 (patch) | |
tree | dd32c3296e153a7890dfb090c319216b3947b0f3 | |
parent | 14c21d6747bbcc5bbc46387f8732480a3512f869 (diff) |
feat: Add filepath walk dir to add directories in watcher
-rw-r--r-- | golings/cmd/watch.go | 37 |
1 files changed, 23 insertions, 14 deletions
diff --git a/golings/cmd/watch.go b/golings/cmd/watch.go index 2581e3b..549770c 100644 --- a/golings/cmd/watch.go +++ b/golings/cmd/watch.go @@ -2,8 +2,10 @@ package cmd import ( "fmt" + "io/fs" "log" "os" + "path/filepath" "github.com/fatih/color" "github.com/fsnotify/fsnotify" @@ -16,15 +18,14 @@ func WatchCmd() *cobra.Command { Short: "Run a single exercise", Run: func(cmd *cobra.Command, args []string) { color.White("WATCHING ALL") - // return nil - // watcher("../../exercises") + log.Println("Create watcher") watcher, err := fsnotify.NewWatcher() if err != nil { log.Fatal(err) } - defer watcher.Close() + // Start listening for events. go func() { for { select { @@ -45,23 +46,31 @@ func WatchCmd() *cobra.Command { } }() - path, err := os.Getwd() - if err := watcher.Add(path); err != nil { - log.Fatal("failed to watch %s, error: %s", path, err.Error()) - } - fmt.Println("PATH:", path) - if err != nil { - log.Fatal(err) - } - /* ... do stuff ... */ + path, _ := os.Getwd() + file_path := fmt.Sprintf("%s/exercises", path) + + err = filepath.WalkDir(file_path, func(path_dir string, d fs.DirEntry, err error) error { + if err != nil { + log.Fatal(err) + return err + } + if d.IsDir() { + log.Printf("Added %s to watch\n", path_dir) + err = watcher.Add(file_path) + + if err != nil { + log.Fatal(err) + } + } + return nil + }) if err != nil { - log.Fatal(err) + log.Fatal("Error in file path:", err.Error()) } // Block main goroutine forever. <-make(chan struct{}) - }, } } |