aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorlalizita <laislima98@hotmail.com>2023-01-09 22:41:16 -0300
committerlalizita <laislima98@hotmail.com>2023-01-09 22:41:16 -0300
commitf3afa472c9296a9df176a6015ce33f0cab6e6984 (patch)
treedd32c3296e153a7890dfb090c319216b3947b0f3
parent14c21d6747bbcc5bbc46387f8732480a3512f869 (diff)
feat: Add filepath walk dir to add directories in watcher
-rw-r--r--golings/cmd/watch.go37
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{})
-
},
}
}