From 753aaf8377fa51c44febc13faaab3de9f504e2e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adam=20=C5=A0trauch?= Date: Sun, 5 Sep 2021 21:35:10 +0200 Subject: [PATCH] CTL: JSON output --- ctl/format.go | 12 ++++++++++++ ctl/main.go | 14 ++++++++++++-- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/ctl/format.go b/ctl/format.go index 97a674d..e479ff9 100644 --- a/ctl/format.go +++ b/ctl/format.go @@ -1,7 +1,9 @@ package main import ( + "encoding/json" "fmt" + "os" "strconv" "github.com/rosti-cz/server_lobby/server" @@ -41,3 +43,13 @@ func printDiscoveries(discoveries []server.Discovery) { fmt.Println() } } + +func printJSON(data interface{}) { + body, err := json.Marshal(data) + if err != nil { + fmt.Println("error occurred while formating the output into JSON:", err.Error()) + os.Exit(3) + } + + fmt.Println(string(body)) +} diff --git a/ctl/main.go b/ctl/main.go index 7a36d82..d3454e3 100644 --- a/ctl/main.go +++ b/ctl/main.go @@ -30,6 +30,7 @@ func main() { host := flag.String("host", "", "Hostname or IP address of lobby daemon") port := flag.Uint("port", 0, "Port of lobby daemon") token := flag.String("token", "", "Token needed to communicate lobby daemon, if empty auth is disabled") + jsonOutput := flag.Bool("json", false, "set output to JSON, error will be still in plain text") flag.Parse() @@ -103,13 +104,22 @@ func main() { } } - printDiscoveries(discoveries) + if *jsonOutput { + printJSON(discoveries) + } else { + printDiscoveries(discoveries) + } case "discovery": discovery, err := client.GetDiscovery() if err != nil { fmt.Println(err) } - printDiscovery(discovery) + + if *jsonOutput { + printJSON(discovery) + } else { + printDiscovery(discovery) + } case "labels": if len(flag.Args()) < 3 { fmt.Println("ERROR: not enough arguments for labels command")