Files
mxaccessgw/clients/go/cmd/mxgw-go/main.go
T
2026-04-26 19:27:27 -04:00

64 lines
1.5 KiB
Go

package main
import (
"encoding/json"
"flag"
"fmt"
"os"
"gitea.dohertylan.com/dohertj2/mxaccessgw/clients/go/mxgateway"
)
type versionOutput struct {
ClientVersion string `json:"clientVersion"`
GatewayProtocolVersion uint32 `json:"gatewayProtocolVersion"`
WorkerProtocolVersion uint32 `json:"workerProtocolVersion"`
}
func main() {
if err := run(os.Args[1:]); err != nil {
fmt.Fprintln(os.Stderr, err)
os.Exit(2)
}
}
func run(args []string) error {
if len(args) == 0 {
return fmt.Errorf("usage: mxgw-go version [-json]")
}
switch args[0] {
case "version":
return runVersion(args[1:])
default:
return fmt.Errorf("unknown command %q", args[0])
}
}
func runVersion(args []string) error {
flags := flag.NewFlagSet("version", flag.ContinueOnError)
flags.SetOutput(os.Stderr)
jsonOutput := flags.Bool("json", false, "write JSON output")
if err := flags.Parse(args); err != nil {
return err
}
output := versionOutput{
ClientVersion: mxgateway.ClientVersion,
GatewayProtocolVersion: mxgateway.GatewayProtocolVersion,
WorkerProtocolVersion: mxgateway.WorkerProtocolVersion,
}
if *jsonOutput {
encoder := json.NewEncoder(os.Stdout)
encoder.SetIndent("", " ")
return encoder.Encode(output)
}
fmt.Fprintf(os.Stdout, "mxgw-go %s\n", output.ClientVersion)
fmt.Fprintf(os.Stdout, "gateway protocol %d\n", output.GatewayProtocolVersion)
fmt.Fprintf(os.Stdout, "worker protocol %d\n", output.WorkerProtocolVersion)
return nil
}