(ctx context.Context, dockerCli command.Cli, backendOptions *BackendOptions, lsOpts lsOptions)
| 84 | } |
| 85 | |
| 86 | func runList(ctx context.Context, dockerCli command.Cli, backendOptions *BackendOptions, lsOpts lsOptions) error { |
| 87 | filters := lsOpts.Filter.Value() |
| 88 | |
| 89 | for filter := range filters { |
| 90 | if _, ok := acceptedListFilters[filter]; !ok { |
| 91 | return errors.New("invalid filter '" + filter + "'") |
| 92 | } |
| 93 | } |
| 94 | |
| 95 | backend, err := compose.NewComposeService(dockerCli, backendOptions.Options...) |
| 96 | if err != nil { |
| 97 | return err |
| 98 | } |
| 99 | stackList, err := backend.List(ctx, api.ListOptions{All: lsOpts.All}) |
| 100 | if err != nil { |
| 101 | return err |
| 102 | } |
| 103 | |
| 104 | if len(filters) > 0 { |
| 105 | var filtered []api.Stack |
| 106 | for _, s := range stackList { |
| 107 | if match(filters, "name", s.Name) { |
| 108 | filtered = append(filtered, s) |
| 109 | } |
| 110 | } |
| 111 | stackList = filtered |
| 112 | } |
| 113 | |
| 114 | if lsOpts.Quiet { |
| 115 | for _, s := range stackList { |
| 116 | _, _ = fmt.Fprintln(dockerCli.Out(), s.Name) |
| 117 | } |
| 118 | return nil |
| 119 | } |
| 120 | |
| 121 | view := viewFromStackList(stackList) |
| 122 | return formatter.Print(view, lsOpts.Format, dockerCli.Out(), func(w io.Writer) { |
| 123 | for _, stack := range view { |
| 124 | _, _ = fmt.Fprintf(w, "%s\t%s\t%s\n", stack.Name, stack.Status, stack.ConfigFiles) |
| 125 | } |
| 126 | }, "NAME", "STATUS", "CONFIG FILES") |
| 127 | } |
| 128 | |
| 129 | type stackView struct { |
| 130 | Name string |
no test coverage detected