package main import ( "context" "encoding/json" "flag" "fmt" "log/slog" "os" reach "forge.cadoles.com/cadoles/go-emlid/reach/client" "forge.cadoles.com/cadoles/go-emlid/reach/client/logger" "github.com/pkg/errors" ) var ( host string = "192.168.42.1" filter string = "task" rawLogLevel string = "ERROR" ) func init() { flag.StringVar(&rawLogLevel, "log-level", rawLogLevel, "log level") flag.StringVar(&host, "host", host, "the reachrs module host") flag.StringVar(&filter, "filter", filter, "filter the type messages by name") } func main() { flag.Parse() ctx := context.Background() client := reach.NewClient(host) logLevel, err := logger.ParseLevel(rawLogLevel) if err != nil { fmt.Printf("[FATAL] %+v", errors.WithStack(err)) os.Exit(1) } slog.SetLogLoggerLevel(logLevel) if err := client.Connect(ctx); err != nil { fmt.Printf("[FATAL] %+v", errors.WithStack(err)) os.Exit(1) } defer func() { if err := client.Close(ctx); err != nil { fmt.Printf("[FATAL] %+v", errors.WithStack(err)) os.Exit(1) } }() fmt.Println(filter) messages, err := reach.OnMessageType(ctx, client, filter) if err != nil { fmt.Printf("[FATAL] %+v", errors.WithStack(err)) os.Exit(1) } for b := range messages { data, err := json.MarshalIndent(b, "", " ") if err != nil { fmt.Printf("[ERROR] %+v", errors.WithStack(err)) continue } fmt.Println(string(data)) } }