in cmd/docker-regex_set-path-prefix.go [64:123]
func setPathPrefix(dcli *client.Client, images abd.ImageMap, pathPrefix string) error {
imageNames := images.SortedNames()
tagOps := make([]abd.TagOp, 0)
for _, imageName := range imageNames {
ref, err := reference.ParseNormalizedNamed(imageName)
if err != nil {
return err
}
_, tag, err := abd.GetImageAndTag(imageName)
if err != nil {
return err
}
refTagged, err := reference.WithTag(ref, tag)
if err != nil {
return err
}
_, lp, err := splitLastPath(ref.String())
if err != nil {
return err
}
newRef, err := reference.ParseNormalizedNamed(pathPrefix + "/" + lp)
if err != nil {
return err
}
newRefTagged, err := reference.WithTag(newRef, tag)
if err != nil {
return err
}
if newRef == ref {
fmt.Println("Skipping NOP retag:", ref)
continue
}
tagOps = append(tagOps, abd.TagOp{From: refTagged.String(), To: newRefTagged.String()})
}
if len(tagOps) == 0 {
fmt.Println("No images to modify")
return nil
}
fmt.Println("Images to change:")
for _, tagOp := range tagOps {
fmt.Printf(" - %v -> %v\n", tagOp.From, tagOp.To)
}
for _, tagOp := range tagOps {
err := abd.MoveTag(dcli, tagOp)
if err != nil {
return err
}
}
return nil
}