summaryrefslogtreecommitdiff
path: root/cmd/podman/system/prune.go
diff options
context:
space:
mode:
Diffstat (limited to 'cmd/podman/system/prune.go')
-rw-r--r--cmd/podman/system/prune.go27
1 files changed, 21 insertions, 6 deletions
diff --git a/cmd/podman/system/prune.go b/cmd/podman/system/prune.go
index f57689584..87bb947ed 100644
--- a/cmd/podman/system/prune.go
+++ b/cmd/podman/system/prune.go
@@ -12,12 +12,14 @@ import (
"github.com/containers/podman/v2/cmd/podman/utils"
"github.com/containers/podman/v2/cmd/podman/validate"
"github.com/containers/podman/v2/pkg/domain/entities"
+ dfilters "github.com/containers/podman/v2/pkg/domain/filters"
+ "github.com/docker/go-units"
"github.com/spf13/cobra"
)
var (
- pruneOptions = entities.SystemPruneOptions{}
-
+ pruneOptions = entities.SystemPruneOptions{}
+ filters []string
pruneDescription = fmt.Sprintf(`
podman system prune
@@ -46,10 +48,15 @@ func init() {
flags.BoolVarP(&force, "force", "f", false, "Do not prompt for confirmation. The default is false")
flags.BoolVarP(&pruneOptions.All, "all", "a", false, "Remove all unused data")
flags.BoolVar(&pruneOptions.Volume, "volumes", false, "Prune volumes")
+ filterFlagName := "filter"
+ flags.StringArrayVar(&filters, filterFlagName, []string{}, "Provide filter values (e.g. 'label=<key>=<value>')")
+ _ = pruneCommand.RegisterFlagCompletionFunc(filterFlagName, completion.AutocompleteNone)
}
func prune(cmd *cobra.Command, args []string) error {
+ var err error
+
// Prompt for confirmation if --force is not set
if !force {
reader := bufio.NewReader(os.Stdin)
@@ -74,13 +81,17 @@ Are you sure you want to continue? [y/N] `, volumeString)
}
}
- // TODO: support for filters in system prune
+ pruneOptions.Filters, err = dfilters.ParseFilterArgumentsIntoFilters(filters)
+ if err != nil {
+ return err
+ }
+
response, err := registry.ContainerEngine().SystemPrune(context.Background(), pruneOptions)
if err != nil {
return err
}
// Print container prune results
- err = utils.PrintContainerPruneResults(response.ContainerPruneReport, true)
+ err = utils.PrintContainerPruneResults(response.ContainerPruneReports, true)
if err != nil {
return err
}
@@ -91,13 +102,17 @@ Are you sure you want to continue? [y/N] `, volumeString)
}
// Print Volume prune results
if pruneOptions.Volume {
- err = utils.PrintVolumePruneResults(response.VolumePruneReport, true)
+ err = utils.PrintVolumePruneResults(response.VolumePruneReports, true)
if err != nil {
return err
}
}
// Print Images prune results
- utils.PrintImagePruneResults(response.ImagePruneReport, true)
+ err = utils.PrintImagePruneResults(response.ImagePruneReports, true)
+ if err != nil {
+ return err
+ }
+ fmt.Printf("Total reclaimed space: %s\n", units.HumanSize((float64)(response.ReclaimedSpace)))
return nil
}