summaryrefslogtreecommitdiff
path: root/cmd/podman/pods_prune.go
diff options
context:
space:
mode:
Diffstat (limited to 'cmd/podman/pods_prune.go')
-rw-r--r--cmd/podman/pods_prune.go47
1 files changed, 47 insertions, 0 deletions
diff --git a/cmd/podman/pods_prune.go b/cmd/podman/pods_prune.go
new file mode 100644
index 000000000..e6946f068
--- /dev/null
+++ b/cmd/podman/pods_prune.go
@@ -0,0 +1,47 @@
+package main
+
+import (
+ "github.com/containers/libpod/cmd/podman/cliconfig"
+ "github.com/containers/libpod/pkg/adapter"
+ "github.com/pkg/errors"
+ "github.com/spf13/cobra"
+)
+
+var (
+ podPruneCommand cliconfig.PodPruneValues
+ podPruneDescription = `
+ podman pod prune
+
+ Removes all exited pods
+`
+ _prunePodsCommand = &cobra.Command{
+ Use: "prune",
+ Args: noSubArgs,
+ Short: "Remove all stopped pods",
+ Long: podPruneDescription,
+ RunE: func(cmd *cobra.Command, args []string) error {
+ podPruneCommand.InputArgs = args
+ podPruneCommand.GlobalFlags = MainGlobalOpts
+ return podPruneCmd(&podPruneCommand)
+ },
+ }
+)
+
+func init() {
+ podPruneCommand.Command = _prunePodsCommand
+ podPruneCommand.SetHelpTemplate(HelpTemplate())
+ podPruneCommand.SetUsageTemplate(UsageTemplate())
+ flags := podPruneCommand.Flags()
+ flags.BoolVarP(&podPruneCommand.Force, "force", "f", false, "Force removal of a running pods. The default is false")
+}
+
+func podPruneCmd(c *cliconfig.PodPruneValues) error {
+ runtime, err := adapter.GetRuntime(&c.PodmanCommand)
+ if err != nil {
+ return errors.Wrapf(err, "could not get runtime")
+ }
+ defer runtime.Shutdown(false)
+
+ ok, failures, err := runtime.PrunePods(getContext(), c)
+ return printCmdResults(ok, failures)
+}