func runPs(dockerCli *client.DockerCli, opts *psOptions) error { ctx := context.Background() if opts.nLatest && opts.last == -1 { opts.last = 1 } containerFilterArgs := filters.NewArgs() for _, f := range opts.filter { var err error containerFilterArgs, err = filters.ParseFlag(f, containerFilterArgs) if err != nil { return err } } options := types.ContainerListOptions{ All: opts.all, Limit: opts.last, Size: opts.size, Filter: containerFilterArgs, } pre := &preProcessor{opts: &options} tmpl, err := templates.Parse(opts.format) if err != nil { return err } _ = tmpl.Execute(ioutil.Discard, pre) containers, err := dockerCli.Client().ContainerList(ctx, options) if err != nil { return err } f := opts.format if len(f) == 0 { if len(dockerCli.PsFormat()) > 0 && !opts.quiet { f = dockerCli.PsFormat() } else { f = "table" } } psCtx := formatter.ContainerContext{ Context: formatter.Context{ Output: dockerCli.Out(), Format: f, Quiet: opts.quiet, Trunc: !opts.noTrunc, }, Size: opts.size, Containers: containers, } psCtx.Write() return nil }