12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- 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)
- }
- }
- }
|