@@ -71,13 +71,12 @@ func checkFilenameFlag(_ []string) error {
71
71
}
72
72
73
73
// processImage is a concurrency-friendly wrapper around getImageForName
74
- func processImage (imageName string , imageMap map [string ]* pkgutil.Image , wg * sync.WaitGroup , errChan chan <- error ) {
75
- defer wg .Done ()
74
+ func processImage (imageName string , errChan chan <- error ) * pkgutil.Image {
76
75
image , err := getImage (imageName )
77
76
if err != nil {
78
77
errChan <- fmt .Errorf ("error retrieving image %s: %s" , imageName , err )
79
78
}
80
- imageMap [ imageName ] = & image
79
+ return & image
81
80
}
82
81
83
82
// collects errors from a channel and combines them
@@ -109,18 +108,24 @@ func diffImages(image1Arg, image2Arg string, diffArgs []string) error {
109
108
110
109
logrus .Infof ("starting diff on images %s and %s, using differs: %s\n " , image1Arg , image2Arg , diffArgs )
111
110
112
- imageMap := map [ string ] * pkgutil.Image {}
111
+ var image1 , image2 * pkgutil.Image
113
112
errChan := make (chan error , 2 )
114
113
115
- go processImage (image1Arg , imageMap , & wg , errChan )
116
- go processImage (image2Arg , imageMap , & wg , errChan )
114
+ go func () {
115
+ defer wg .Done ()
116
+ image1 = processImage (image1Arg , errChan )
117
+ }()
118
+ go func () {
119
+ defer wg .Done ()
120
+ image2 = processImage (image2Arg , errChan )
121
+ }()
117
122
118
123
wg .Wait ()
119
124
close (errChan )
120
125
121
126
if noCache && ! save {
122
- defer pkgutil .CleanupImage (* imageMap [ image1Arg ] )
123
- defer pkgutil .CleanupImage (* imageMap [ image2Arg ] )
127
+ defer pkgutil .CleanupImage (* image1 )
128
+ defer pkgutil .CleanupImage (* image2 )
124
129
}
125
130
126
131
if err := readErrorsFromChannel (errChan ); err != nil {
@@ -129,8 +134,8 @@ func diffImages(image1Arg, image2Arg string, diffArgs []string) error {
129
134
130
135
logrus .Info ("computing diffs" )
131
136
req := differs.DiffRequest {
132
- Image1 : * imageMap [ image1Arg ] ,
133
- Image2 : * imageMap [ image2Arg ] ,
137
+ Image1 : * image1 ,
138
+ Image2 : * image2 ,
134
139
DiffTypes : diffTypes }
135
140
diffs , err := req .GetDiff ()
136
141
if err != nil {
@@ -140,15 +145,15 @@ func diffImages(image1Arg, image2Arg string, diffArgs []string) error {
140
145
141
146
if filename != "" {
142
147
logrus .Info ("computing filename diffs" )
143
- err := diffFile (imageMap [ image1Arg ], imageMap [ image2Arg ] )
148
+ err := diffFile (image1 , image2 )
144
149
if err != nil {
145
150
return err
146
151
}
147
152
}
148
153
149
154
if noCache && save {
150
- logrus .Infof ("images were saved at %s and %s" , imageMap [ image1Arg ] .FSPath ,
151
- imageMap [ image2Arg ] .FSPath )
155
+ logrus .Infof ("images were saved at %s and %s" , image1 .FSPath ,
156
+ image2 .FSPath )
152
157
}
153
158
return nil
154
159
}
0 commit comments