summaryrefslogtreecommitdiff
path: root/cmd/podman/pods/ps.go
diff options
context:
space:
mode:
Diffstat (limited to 'cmd/podman/pods/ps.go')
-rw-r--r--cmd/podman/pods/ps.go41
1 files changed, 29 insertions, 12 deletions
diff --git a/cmd/podman/pods/ps.go b/cmd/podman/pods/ps.go
index 688108c1a..99d324411 100644
--- a/cmd/podman/pods/ps.go
+++ b/cmd/podman/pods/ps.go
@@ -10,7 +10,10 @@ import (
"text/template"
"time"
+ "github.com/containers/common/pkg/completion"
"github.com/containers/common/pkg/report"
+ "github.com/containers/podman/v2/cmd/podman/common"
+ "github.com/containers/podman/v2/cmd/podman/parse"
"github.com/containers/podman/v2/cmd/podman/registry"
"github.com/containers/podman/v2/cmd/podman/validate"
"github.com/containers/podman/v2/pkg/domain/entities"
@@ -24,12 +27,13 @@ var (
// Command: podman pod _ps_
psCmd = &cobra.Command{
- Use: "ps [options]",
- Aliases: []string{"ls", "list"},
- Short: "List pods",
- Long: psDescription,
- RunE: pods,
- Args: validate.NoArgs,
+ Use: "ps [options]",
+ Aliases: []string{"ls", "list"},
+ Short: "List pods",
+ Long: psDescription,
+ RunE: pods,
+ Args: validate.NoArgs,
+ ValidArgsFunction: completion.AutocompleteNone,
}
)
@@ -50,13 +54,24 @@ func init() {
flags.BoolVar(&psInput.CtrIds, "ctr-ids", false, "Display the container UUIDs. If no-trunc is not set they will be truncated")
flags.BoolVar(&psInput.CtrStatus, "ctr-status", false, "Display the container status")
// TODO should we make this a [] ?
- flags.StringSliceVarP(&inputFilters, "filter", "f", []string{}, "Filter output based on conditions given")
- flags.StringVar(&psInput.Format, "format", "", "Pretty-print pods to JSON or using a Go template")
+
+ filterFlagName := "filter"
+ flags.StringSliceVarP(&inputFilters, filterFlagName, "f", []string{}, "Filter output based on conditions given")
+ _ = psCmd.RegisterFlagCompletionFunc(filterFlagName, common.AutocompletePodPsFilters)
+
+ formatFlagName := "format"
+ flags.StringVar(&psInput.Format, formatFlagName, "", "Pretty-print pods to JSON or using a Go template")
+ _ = psCmd.RegisterFlagCompletionFunc(formatFlagName, common.AutocompleteJSONFormat)
+
flags.BoolVar(&psInput.Namespace, "namespace", false, "Display namespace information of the pod")
flags.BoolVar(&psInput.Namespace, "ns", false, "Display namespace information of the pod")
flags.BoolVar(&noTrunc, "no-trunc", false, "Do not truncate pod and container IDs")
flags.BoolVarP(&psInput.Quiet, "quiet", "q", false, "Print the numeric IDs of the pods only")
- flags.StringVar(&psInput.Sort, "sort", "created", "Sort output by created, id, name, or number")
+
+ sortFlagName := "sort"
+ flags.StringVar(&psInput.Sort, sortFlagName, "created", "Sort output by created, id, name, or number")
+ _ = psCmd.RegisterFlagCompletionFunc(sortFlagName, common.AutocompletePodPsSort)
+
validate.AddLatestFlag(psCmd, &psInput.Latest)
}
@@ -113,20 +128,22 @@ func pods(cmd *cobra.Command, _ []string) error {
"Created": "CREATED",
"InfraID": "INFRA ID",
})
+ renderHeaders := true
row := podPsFormat()
if cmd.Flags().Changed("format") {
+ renderHeaders = parse.HasTable(psInput.Format)
row = report.NormalizeFormat(psInput.Format)
}
- row = "{{range . }}" + row + "{{end}}"
+ format := parse.EnforceRange(row)
- tmpl, err := template.New("listPods").Parse(row)
+ tmpl, err := template.New("listPods").Parse(format)
if err != nil {
return err
}
w := tabwriter.NewWriter(os.Stdout, 8, 2, 2, ' ', 0)
defer w.Flush()
- if !psInput.Quiet && !cmd.Flag("format").Changed {
+ if renderHeaders {
if err := tmpl.Execute(w, headers); err != nil {
return err
}