...
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 }
41
View as plain text