diff options
Diffstat (limited to 'cmd/podman/save.go')
-rw-r--r-- | cmd/podman/save.go | 34 |
1 files changed, 21 insertions, 13 deletions
diff --git a/cmd/podman/save.go b/cmd/podman/save.go index 577a22358..1f4b1ce7f 100644 --- a/cmd/podman/save.go +++ b/cmd/podman/save.go @@ -129,19 +129,9 @@ func saveCmd(c *cli.Context) error { dest := dst // need dest to be in the format transport:path:reference for the following transports if strings.Contains(dst, libpod.OCIArchive) || strings.Contains(dst, libpod.DockerArchive) { - if !strings.Contains(newImage.ID(), source) { - prepend := "" - if !strings.Contains(source, libpodImage.DefaultLocalRepo) { - // we need to check if localhost was added to the image name in NewFromLocal - for _, name := range newImage.Names() { - // if the user searched for the image whose tag was prepended with localhost, we'll need to prepend localhost to successfully search - if strings.Contains(name, libpodImage.DefaultLocalRepo) && strings.Contains(name, source) { - prepend = fmt.Sprintf("%s/", libpodImage.DefaultLocalRepo) - break - } - } - } - dest = fmt.Sprintf("%s:%s%s", dst, prepend, source) + destImageName := imageNameForSaveDestination(newImage, source) + if destImageName != "" { + dest = fmt.Sprintf("%s:%s", dst, destImageName) } } if err := newImage.PushImage(getContext(), dest, manifestType, "", "", writer, c.Bool("compress"), libpodImage.SigningOptions{}, &libpodImage.DockerRegistryOptions{}, false, additionaltags); err != nil { @@ -153,3 +143,21 @@ func saveCmd(c *cli.Context) error { return nil } + +func imageNameForSaveDestination(newImage *libpodImage.Image, source string) string { + if !strings.Contains(newImage.ID(), source) { + prepend := "" + if !strings.Contains(source, libpodImage.DefaultLocalRepo) { + // we need to check if localhost was added to the image name in NewFromLocal + for _, name := range newImage.Names() { + // if the user searched for the image whose tag was prepended with localhost, we'll need to prepend localhost to successfully search + if strings.Contains(name, libpodImage.DefaultLocalRepo) && strings.Contains(name, source) { + prepend = fmt.Sprintf("%s/", libpodImage.DefaultLocalRepo) + break + } + } + } + return fmt.Sprintf("%s%s", prepend, source) + } + return "" +} |