func setPathPrefix()

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
}