summaryrefslogtreecommitdiff
path: root/cmd/podman/images/diff.go
diff options
context:
space:
mode:
Diffstat (limited to 'cmd/podman/images/diff.go')
-rw-r--r--cmd/podman/images/diff.go40
1 files changed, 10 insertions, 30 deletions
diff --git a/cmd/podman/images/diff.go b/cmd/podman/images/diff.go
index 2e883d7ae..825aab362 100644
--- a/cmd/podman/images/diff.go
+++ b/cmd/podman/images/diff.go
@@ -1,11 +1,11 @@
package images
import (
- "github.com/containers/common/pkg/report"
"github.com/containers/podman/v3/cmd/podman/common"
+ "github.com/containers/podman/v3/cmd/podman/diff"
"github.com/containers/podman/v3/cmd/podman/registry"
+ "github.com/containers/podman/v3/libpod/define"
"github.com/containers/podman/v3/pkg/domain/entities"
- "github.com/pkg/errors"
"github.com/spf13/cobra"
"github.com/spf13/pflag"
)
@@ -13,11 +13,11 @@ import (
var (
// podman container _inspect_
diffCmd = &cobra.Command{
- Use: "diff [options] IMAGE",
- Args: cobra.ExactArgs(1),
+ Use: "diff [options] IMAGE [IMAGE]",
+ Args: cobra.RangeArgs(1, 2),
Short: "Inspect changes to the image's file systems",
- Long: `Displays changes to the image's filesystem. The image will be compared to its parent layer.`,
- RunE: diff,
+ Long: `Displays changes to the image's filesystem. The image will be compared to its parent layer or the second argument when given.`,
+ RunE: diffRun,
ValidArgsFunction: common.AutocompleteImages,
Example: `podman image diff myImage
podman image diff --format json redis:alpine`,
@@ -39,31 +39,11 @@ func diffFlags(flags *pflag.FlagSet) {
_ = flags.MarkDeprecated("archive", "Provided for backwards compatibility, has no impact on output.")
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))
}
-func diff(cmd *cobra.Command, args []string) error {
- if diffOpts.Latest {
- return errors.New("image diff does not support --latest")
- }
-
- results, err := registry.ImageEngine().Diff(registry.GetContext(), args[0], *diffOpts)
- if err != nil {
- return err
- }
-
- switch {
- case report.IsJSON(diffOpts.Format):
- return common.ChangesToJSON(results)
- case diffOpts.Format == "":
- return common.ChangesToTable(results)
- default:
- return errors.New("only supported value for '--format' is 'json'")
- }
-}
-
-func Diff(cmd *cobra.Command, args []string, options entities.DiffOptions) error {
- diffOpts = &options
- return diff(cmd, args)
+func diffRun(cmd *cobra.Command, args []string) error {
+ diffOpts.Type = define.DiffImage
+ return diff.Diff(cmd, args, *diffOpts)
}