summaryrefslogtreecommitdiff
path: root/cmd/podman/diff.go
diff options
context:
space:
mode:
Diffstat (limited to 'cmd/podman/diff.go')
-rw-r--r--cmd/podman/diff.go42
1 files changed, 11 insertions, 31 deletions
diff --git a/cmd/podman/diff.go b/cmd/podman/diff.go
index e2a3cd727..c592b6a22 100644
--- a/cmd/podman/diff.go
+++ b/cmd/podman/diff.go
@@ -1,13 +1,11 @@
package main
import (
- "fmt"
-
"github.com/containers/podman/v3/cmd/podman/common"
- "github.com/containers/podman/v3/cmd/podman/containers"
- "github.com/containers/podman/v3/cmd/podman/images"
+ "github.com/containers/podman/v3/cmd/podman/diff"
"github.com/containers/podman/v3/cmd/podman/registry"
"github.com/containers/podman/v3/cmd/podman/validate"
+ "github.com/containers/podman/v3/libpod/define"
"github.com/containers/podman/v3/pkg/domain/entities"
"github.com/spf13/cobra"
)
@@ -16,13 +14,13 @@ import (
var (
// Command: podman _diff_ Object_ID
- diffDescription = `Displays changes on a container or image's filesystem. The container or image will be compared to its parent layer.`
+ diffDescription = `Displays changes on a container or image's filesystem. The container or image will be compared to its parent layer or the second argument when given.`
diffCmd = &cobra.Command{
- Use: "diff [options] {CONTAINER|IMAGE}",
- Args: validate.IDOrLatestArgs,
+ Use: "diff [options] {CONTAINER|IMAGE} [{CONTAINER|IMAGE}]",
+ Args: diff.ValidateContainerDiffArgs,
Short: "Display the changes to the object's file system",
Long: diffDescription,
- RunE: diff,
+ RunE: diffRun,
ValidArgsFunction: common.AutocompleteContainersAndImages,
Example: `podman diff imageID
podman diff ctrID
@@ -37,36 +35,18 @@ func init() {
Command: diffCmd,
})
flags := diffCmd.Flags()
+ // FIXME: Why does this exists? It is not used anywhere.
flags.BoolVar(&diffOpts.Archive, "archive", true, "Save the diff as a tar archive")
_ = flags.MarkHidden("archive")
formatFlagName := "format"
- flags.StringVar(&diffOpts.Format, formatFlagName, "", "Change the output format")
+ flags.StringVar(&diffOpts.Format, formatFlagName, "", "Change the output format (json)")
_ = diffCmd.RegisterFlagCompletionFunc(formatFlagName, common.AutocompleteFormat(nil))
validate.AddLatestFlag(diffCmd, &diffOpts.Latest)
}
-func diff(cmd *cobra.Command, args []string) error {
- // Latest implies looking for a container
- if diffOpts.Latest {
- return containers.Diff(cmd, args, diffOpts)
- }
-
- options := entities.ContainerExistsOptions{
- External: true,
- }
- if found, err := registry.ContainerEngine().ContainerExists(registry.GetContext(), args[0], options); err != nil {
- return err
- } else if found.Value {
- return containers.Diff(cmd, args, diffOpts)
- }
-
- if found, err := registry.ImageEngine().Exists(registry.GetContext(), args[0]); err != nil {
- return err
- } else if found.Value {
- return images.Diff(cmd, args, diffOpts)
- }
-
- return fmt.Errorf("%s not found on system", args[0])
+func diffRun(cmd *cobra.Command, args []string) error {
+ diffOpts.Type = define.DiffAll
+ return diff.Diff(cmd, args, diffOpts)
}