From 3dec6a1cdf2de8e0105aa1a1f74065725d54008f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miloslav=20Trma=C4=8D?= Date: Tue, 1 May 2018 22:18:22 +0200 Subject: [PATCH] Stop using docker.Image Instead, use DockerReference() to obtain the repository name (which also makes it work for other transports that support Docker references), and a check for docker.Transport + docker.GetRepositoryTags. This will allow dropping docker.Image from containers/image, and maybe even all of ImageReference.NewImage (forcing callers to think about manifest lists, among other things). --- cmd/skopeo/inspect.go | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/cmd/skopeo/inspect.go b/cmd/skopeo/inspect.go index ec394299..aef03851 100644 --- a/cmd/skopeo/inspect.go +++ b/cmd/skopeo/inspect.go @@ -96,10 +96,10 @@ var inspectCmd = cli.Command{ return err } outputData := inspectOutput{ - Name: "", // Possibly overridden for a docker.Image. + Name: "", // Set below if DockerReference() is known Tag: imgInspect.Tag, // Digest is set below. - RepoTags: []string{}, // Possibly overriden for a docker.Image. + RepoTags: []string{}, // Possibly overriden for docker.Transport. Created: imgInspect.Created, DockerVersion: imgInspect.DockerVersion, Labels: imgInspect.Labels, @@ -111,9 +111,15 @@ var inspectCmd = cli.Command{ if err != nil { return fmt.Errorf("Error computing manifest digest: %v", err) } - if dockerImg, ok := img.(*docker.Image); ok { - outputData.Name = dockerImg.SourceRefFullName() - outputData.RepoTags, err = dockerImg.GetRepositoryTags(ctx) + if dockerRef := img.Reference().DockerReference(); dockerRef != nil { + outputData.Name = dockerRef.Name() + } + if img.Reference().Transport() == docker.Transport { + sys, err := contextFromGlobalOptions(c, "") + if err != nil { + return err + } + outputData.RepoTags, err = docker.GetRepositoryTags(ctx, sys, img.Reference()) if err != nil { // some registries may decide to block the "list all tags" endpoint // gracefully allow the inspect to continue in this case. Currently