package util

import (
	"log"

	"github.com/fsnotify/fsnotify"
)

func FileWatching(path string, update func() error) error {
	watcher, err := fsnotify.NewWatcher()
	if err != nil {
		return err
	}

	err = watcher.Add(path)
	if err != nil {
		return err
	}

	go func() {
		for event := range watcher.Events {
			if event.Op == fsnotify.Write {
				log.Println("file changed ", path)

				err := update()
				if err != nil {
					log.Println("file update err on write event: ", err, path)
				}
			}
		}
	}()

	return err
}
