// Command mesh-delivery-cli is the operator's command for the delivery view (novox/hq ADR 0429 ยง3). It asks the // view's local socket for the rows and prints them; it holds no credential and changes nothing. package main import ( "encoding/json" "flag" "fmt" "io" "os" "mesh-delivery-view/internal/view" ) const defaultSocket = "/var/lib/mesh-delivery-view-cli/cli.sock" func main() { socket := os.Getenv("MESH_DELIVERY_SOCKET") if socket == "" { socket = defaultSocket } os.Exit(run(os.Args[1:], socket, os.Stdout, os.Stderr)) } func run(args []string, socket string, out, errOut io.Writer) int { fs := flag.NewFlagSet("mesh-delivery-cli", flag.ContinueOnError) fs.SetOutput(errOut) asJSON := fs.Bool("json", false, "print the rows as JSON") if err := fs.Parse(args); err != nil { return 2 } if fs.NArg() > 0 { fmt.Fprintln(errOut, "mesh-delivery-cli takes no argument: it only shows") return 2 } s, err := view.Ask(socket) if err != nil { fmt.Fprintln(errOut, "mesh-delivery-cli:", err) return 1 } if *asJSON { enc := json.NewEncoder(out) enc.SetIndent("", " ") if err := enc.Encode(s); err != nil { fmt.Fprintln(errOut, "mesh-delivery-cli:", err) return 1 } return 0 } view.Table(out, s) return 0 }