package main import ( "flag" "fmt" "golang.org/x/exp/inotify" "strings" ) type arrayFlags []string func (i *arrayFlags) String() string { return strings.Join(*i, ", ") } func (i *arrayFlags) Set(value string) error { *i = append(*i, value) return nil } func main() { var paths arrayFlags var container string flag.Var(&paths, "path", "Path to monitor for changes (may be specified multiple times)") flag.StringVar(&container, "container", "nginx", "Name of the container in which nginx is running") flag.Parse() fmt.Printf("Hello, world.\nPaths: %v\nContainer: %v\n", paths, container) if len(paths) == 0 { panic("No paths specified") } watch_for_changes(paths) } func watch_for_changes(paths []string) { watcher, err := inotify.NewWatcher() if err != nil { panic(err) } defer watcher.Close() for _, path := range paths { watcher.Watch(path) } for { select { case event := <-watcher.Event: panic(event) case err := <-watcher.Error: panic(err) } } }