diff options
Diffstat (limited to 'cmd/podman/diff.go')
-rw-r--r-- | cmd/podman/diff.go | 42 |
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) } |