@@ -77,64 +77,52 @@ func diffImages(image1Arg, image2Arg string, diffArgs []string) error {
7777
7878 glog .Infof ("Starting diff on images %s and %s, using differs: %s" , image1Arg , image2Arg , diffArgs )
7979
80- var image1 , image2 utils.Image
81- go func () {
82- defer wg .Done ()
83- ip := utils.ImagePrepper {
84- Source : image1Arg ,
85- Client : cli ,
86- }
87- image1 , err = ip .GetImage ()
88- if err != nil {
89- glog .Error (err .Error ())
90- }
91- }()
92-
93- go func () {
94- defer wg .Done ()
95- ip := utils.ImagePrepper {
96- Source : image2Arg ,
97- Client : cli ,
98- }
99- image2 , err = ip .GetImage ()
100- if err != nil {
101- glog .Error (err .Error ())
102- }
103- }()
80+ imageMap := map [string ]* utils.Image {
81+ image1Arg : {},
82+ image2Arg : {},
83+ }
84+ for imageArg := range imageMap {
85+ go func (imageName string , imageMap map [string ]* utils.Image ) {
86+ defer wg .Done ()
87+ ip := utils.ImagePrepper {
88+ Source : imageName ,
89+ Client : cli ,
90+ }
91+ image , err := ip .GetImage ()
92+ imageMap [imageName ] = & image
93+ if err != nil {
94+ glog .Error (err .Error ())
95+ }
96+ }(imageArg , imageMap )
97+ }
10498 wg .Wait ()
105- if err != nil {
106- cleanupImage ( image1 )
107- cleanupImage (image2 )
108- return errors . New ( "Could not perform image diff" )
99+
100+ if ! save {
101+ defer cleanupImage (* imageMap [ image1Arg ] )
102+ defer cleanupImage ( * imageMap [ image2Arg ] )
109103 }
110104
111105 diffTypes , err := differs .GetAnalyzers (diffArgs )
112106 if err != nil {
113107 glog .Error (err .Error ())
114- cleanupImage (image1 )
115- cleanupImage (image2 )
116108 return errors .New ("Could not perform image diff" )
117109 }
118110
119- req := differs.DiffRequest {image1 , image2 , diffTypes }
120- if diffs , err := req .GetDiff (); err == nil {
121- glog .Info ("Retrieving diffs" )
122- outputResults (diffs )
123- if ! save {
124- cleanupImage (image1 )
125- cleanupImage (image2 )
126-
127- } else {
128- dir , _ := os .Getwd ()
129- glog .Infof ("Images were saved at %s as %s and %s" , dir , image1 .FSPath , image2 .FSPath )
130- }
131- } else {
111+ req := differs.DiffRequest {* imageMap [image1Arg ], * imageMap [image2Arg ], diffTypes }
112+ diffs , err := req .GetDiff ()
113+ if err != nil {
132114 glog .Error (err .Error ())
133- cleanupImage (image1 )
134- cleanupImage (image2 )
135115 return errors .New ("Could not perform image diff" )
136116 }
117+ glog .Info ("Retrieving diffs" )
118+ outputResults (diffs )
137119
120+ if save {
121+ dir , _ := os .Getwd ()
122+ glog .Infof ("Images were saved at %s as %s and %s" , dir , imageMap [image1Arg ].FSPath ,
123+ imageMap [image2Arg ].FSPath )
124+
125+ }
138126 return nil
139127}
140128
0 commit comments