github.com/icyphox/x@v0.0.355-0.20220311094250-029bd783e8b8/watcherx/integrationtest/main.go (about) 1 package main 2 3 import ( 4 "context" 5 "fmt" 6 "io/ioutil" 7 "os" 8 9 "github.com/ory/x/watcherx" 10 ) 11 12 func main() { 13 if len(os.Args) != 2 { 14 _, _ = fmt.Fprintf(os.Stderr, "expected 1 comand line argument but got %d\n", len(os.Args)-1) 15 os.Exit(1) 16 } 17 c := make(chan watcherx.Event) 18 ctx, cancel := context.WithCancel(context.Background()) 19 _, err := watcherx.WatchFile(ctx, os.Args[1], c) 20 if err != nil { 21 _, _ = fmt.Fprintf(os.Stderr, "could not initialize file watcher: %+v\n", err) 22 os.Exit(1) 23 } 24 fmt.Printf("watching file %s\n", os.Args[1]) 25 defer cancel() 26 for { 27 switch e := (<-c).(type) { 28 case *watcherx.ChangeEvent: 29 var data []byte 30 data, err = ioutil.ReadAll(e.Reader()) 31 fmt.Printf("got change event:\nData: %s,\nSrc: %s\n", data, e.Source()) 32 case *watcherx.RemoveEvent: 33 fmt.Printf("got remove event:\nSrc: %s\n", e.Source()) 34 case *watcherx.ErrorEvent: 35 fmt.Printf("got error event:\nError: %s\n", e.Error()) 36 default: 37 fmt.Println("got unknown event") 38 } 39 } 40 }