...

Source file src/github.com/ory/x/watcherx/integrationtest/main.go

Documentation: github.com/ory/x/watcherx/integrationtest

     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