From 1f388ede6f1425ecc6e2a6fddba1d811bc41e2c0 Mon Sep 17 00:00:00 2001 From: Jhon Honce Date: Mon, 21 Jun 2021 14:52:41 -0700 Subject: Add --format to connection list Add support for the --format option to podman system connection list. Signed-off-by: Jhon Honce --- cmd/podman/system/connection/list.go | 35 +++++++++++++++++++++++++++++------ 1 file changed, 29 insertions(+), 6 deletions(-) (limited to 'cmd/podman/system/connection') diff --git a/cmd/podman/system/connection/list.go b/cmd/podman/system/connection/list.go index b0b15b57d..2f74215c1 100644 --- a/cmd/podman/system/connection/list.go +++ b/cmd/podman/system/connection/list.go @@ -1,11 +1,13 @@ package connection import ( + "fmt" "os" "github.com/containers/common/pkg/completion" "github.com/containers/common/pkg/config" "github.com/containers/common/pkg/report" + "github.com/containers/podman/v3/cmd/podman/common" "github.com/containers/podman/v3/cmd/podman/registry" "github.com/containers/podman/v3/cmd/podman/system" "github.com/containers/podman/v3/cmd/podman/validate" @@ -14,13 +16,14 @@ import ( var ( listCmd = &cobra.Command{ - Use: "list", + Use: "list [options]", Aliases: []string{"ls"}, Args: validate.NoArgs, Short: "List destination for the Podman service(s)", Long: `List destination information for the Podman service(s) in podman configuration`, Example: `podman system connection list - podman system connection ls`, + podman system connection ls + podman system connection ls --format=json`, ValidArgsFunction: completion.AutocompleteNone, RunE: list, TraverseChildren: false, @@ -32,6 +35,9 @@ func init() { Command: listCmd, Parent: system.ConnectionCmd, }) + + listCmd.Flags().String("format", "", "Custom Go template for printing connections") + _ = listCmd.RegisterFlagCompletionFunc("format", common.AutocompleteFormat(namedDestination{})) } type namedDestination struct { @@ -39,7 +45,7 @@ type namedDestination struct { config.Destination } -func list(_ *cobra.Command, _ []string) error { +func list(cmd *cobra.Command, _ []string) error { cfg, err := config.ReadCustomConfig() if err != nil { return err @@ -71,8 +77,22 @@ func list(_ *cobra.Command, _ []string) error { rows = append(rows, r) } - // TODO: Allow user to override format - format := "{{range . }}{{.Name}}\t{{.Identity}}\t{{.URI}}\n{{end -}}" + format := "{{.Name}}\t{{.Identity}}\t{{.URI}}\n" + switch { + case report.IsJSON(cmd.Flag("format").Value.String()): + buf, err := registry.JSONLibrary().MarshalIndent(rows, "", " ") + if err == nil { + fmt.Println(string(buf)) + } + return err + default: + if cmd.Flag("format").Changed { + format = cmd.Flag("format").Value.String() + format = report.NormalizeFormat(format) + } + } + format = report.EnforceRange(format) + tmpl, err := report.NewTemplate("list").Parse(format) if err != nil { return err @@ -84,6 +104,9 @@ func list(_ *cobra.Command, _ []string) error { } defer w.Flush() - _ = tmpl.Execute(w, hdrs) + isTable := report.HasTable(cmd.Flag("format").Value.String()) + if !cmd.Flag("format").Changed || isTable { + _ = tmpl.Execute(w, hdrs) + } return tmpl.Execute(w, rows) } -- cgit v1.2.3-54-g00ecf