From 3aae34694623cce5f1da4a93c7c1e729c528402c Mon Sep 17 00:00:00 2001 From: Jakub Guzik Date: Sat, 8 May 2021 22:47:23 +0200 Subject: Move filter parsing to common utils Signed-off-by: Jakub Guzik --- cmd/podman/common/util.go | 15 +++++++++++++++ cmd/podman/containers/prune.go | 15 +++++---------- 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/cmd/podman/common/util.go b/cmd/podman/common/util.go index 2a8b2040c..afee55914 100644 --- a/cmd/podman/common/util.go +++ b/cmd/podman/common/util.go @@ -35,6 +35,21 @@ func ReadPodIDFiles(files []string) ([]string, error) { return ids, nil } +// ParseFilters transforms one filter format to another and validates input +func ParseFilters(filter []string) (map[string][]string, error) { + // TODO Remove once filter refactor is finished and url.Values done. + filters := map[string][]string{} + for _, f := range filter { + t := strings.SplitN(f, "=", 2) + filters = make(map[string][]string) + if len(t) < 2 { + return map[string][]string{}, errors.Errorf("filter input must be in the form of filter=value: %s is invalid", f) + } + filters[t[0]] = append(filters[t[0]], t[1]) + } + return filters, nil +} + // createExpose parses user-provided exposed port definitions and converts them // into SpecGen format. // TODO: The SpecGen format should really handle ranges more sanely - we could diff --git a/cmd/podman/containers/prune.go b/cmd/podman/containers/prune.go index 9acf5589b..837d90f70 100644 --- a/cmd/podman/containers/prune.go +++ b/cmd/podman/containers/prune.go @@ -4,16 +4,15 @@ import ( "bufio" "context" "fmt" - "net/url" "os" "strings" "github.com/containers/common/pkg/completion" + "github.com/containers/podman/v3/cmd/podman/common" "github.com/containers/podman/v3/cmd/podman/registry" "github.com/containers/podman/v3/cmd/podman/utils" "github.com/containers/podman/v3/cmd/podman/validate" "github.com/containers/podman/v3/pkg/domain/entities" - "github.com/pkg/errors" "github.com/spf13/cobra" ) @@ -50,6 +49,7 @@ func init() { func prune(cmd *cobra.Command, args []string) error { var ( pruneOptions = entities.ContainerPruneOptions{} + err error ) if !force { reader := bufio.NewReader(os.Stdin) @@ -64,14 +64,9 @@ func prune(cmd *cobra.Command, args []string) error { } } - // TODO Remove once filter refactor is finished and url.Values done. - for _, f := range filter { - t := strings.SplitN(f, "=", 2) - pruneOptions.Filters = make(url.Values) - if len(t) < 2 { - return errors.Errorf("filter input must be in the form of filter=value: %s is invalid", f) - } - pruneOptions.Filters.Add(t[0], t[1]) + pruneOptions.Filters, err = common.ParseFilters(filter) + if err != nil { + return err } responses, err := registry.ContainerEngine().ContainerPrune(context.Background(), pruneOptions) -- cgit v1.2.3-54-g00ecf