package cli import ( "encoding/json" "fmt" "io" "sort" "strings" ) // printJSON is the shared -format=json path for every headless command. func printJSON(w io.Writer, v interface{}) error { enc := json.NewEncoder(w) enc.SetIndent("", " ") return enc.Encode(v) } // printKV renders a map as an aligned "key value" table, sorted by key. // Used by `status` and `read` in their default (non-JSON) output. func printKV(w io.Writer, m map[string]string) { keys := make([]string, 0, len(m)) width := 0 for k := range m { keys = append(keys, k) if len(k) > width { width = len(k) } } sort.Strings(keys) for _, k := range keys { fmt.Fprintf(w, "%-*s %s\n", width, k, m[k]) } } // parseKVArgs turns ["key=value", "other=1"] positional args into a map, // used by `write` and as auth method params on `login`. func parseKVArgs(args []string) (map[string]string, error) { out := map[string]string{} for _, a := range args { k, v, ok := strings.Cut(a, "=") if !ok { return nil, fmt.Errorf("expected key=value, got %q", a) } out[k] = v } return out, nil }