func labelImages()

in cmd/docker-regex_label-images.go [40:86]


func labelImages(cmd *cobra.Command, args []string) error {
	r, err := abd.MakeRegex(args[0])
	if err != nil {
		return err
	}

	dcli, err := client.NewClientWithOpts(client.FromEnv)
	if err != nil {
		return err
	}

	found, err := abd.FindImages(dcli, r)
	if err != nil {
		return err
	}

	fmt.Println("Labels to add:")
	fmt.Println(Labels)
	labels := make(map[string]string)
	for _, label := range Labels {
		kv := strings.Split(label, "=")
		if len(kv) != 2 {
			return fmt.Errorf("invalid label '%v' (must be of the form 'key=value')", kv)
		}
		if len(kv[0]) == 0 || len(kv[1]) == 0 {
			return fmt.Errorf("invalid label '%v' (must be of the form 'key=value'; both key and value must be non-empty strings)", kv)
		}
		labels[kv[0]] = kv[1]
	}

	if len(labels) == 0 {
		fmt.Println("No labels defined; nothing to do")
		return nil
	}

	fmt.Println("Images to add labels to:")
	found.ShowPretty()

	for _, image := range found.SortedNames() {
		dockerfileContents := "FROM " + image
		fmt.Println(dockerfileContents)
		tags := []string{image}
		abd.BuildImage(dcli, []byte(dockerfileContents), labels, tags)
	}

	return nil
}