aboutsummaryrefslogtreecommitdiff
path: root/cmd
diff options
context:
space:
mode:
Diffstat (limited to 'cmd')
-rw-r--r--cmd/podman/system/connection/list.go35
1 files changed, 29 insertions, 6 deletions
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)
}