summaryrefslogtreecommitdiff
path: root/cmd/podman/save.go
diff options
context:
space:
mode:
Diffstat (limited to 'cmd/podman/save.go')
-rw-r--r--cmd/podman/save.go34
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 ""
+}