Skip to content
This repository was archived by the owner on Mar 27, 2024. It is now read-only.

Commit 26e670c

Browse files
committed
Addressing Nick's comments
1 parent 414dd3a commit 26e670c

File tree

1 file changed

+46
-25
lines changed

1 file changed

+46
-25
lines changed

cmd/root.go

Lines changed: 46 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
goflag "flag"
77
"fmt"
88
"os"
9+
"reflect"
910
"sort"
1011
"sync"
1112

@@ -59,15 +60,21 @@ var RootCmd = &cobra.Command{
5960
analyzeArgs = allAnalyzers
6061
}
6162

63+
var err error
6264
if len(args) == 1 {
63-
analyzeImage(args[0], analyzeArgs)
65+
err = analyzeImage(args[0], analyzeArgs)
6466
} else {
65-
diffImages(args[0], args[1], analyzeArgs)
67+
err = diffImages(args[0], args[1], analyzeArgs)
68+
}
69+
70+
if err != nil {
71+
glog.Error(err)
72+
os.Exit(1)
6673
}
6774
},
6875
}
6976

70-
func diffImages(image1Arg, image2Arg string, diffArgs []string) {
77+
func diffImages(image1Arg, image2Arg string, diffArgs []string) error {
7178
var wg sync.WaitGroup
7279
wg.Add(2)
7380

@@ -80,7 +87,6 @@ func diffImages(image1Arg, image2Arg string, diffArgs []string) {
8087
image1, err = utils.ImagePrepper{image1Arg}.GetImage()
8188
if err != nil {
8289
glog.Error(err.Error())
83-
os.Exit(1)
8490
}
8591
}()
8692

@@ -89,16 +95,22 @@ func diffImages(image1Arg, image2Arg string, diffArgs []string) {
8995
image2, err = utils.ImagePrepper{image2Arg}.GetImage()
9096
if err != nil {
9197
glog.Error(err.Error())
92-
os.Exit(1)
9398
}
9499
}()
100+
wg.Wait()
101+
if err != nil {
102+
cleanupImage(image1)
103+
cleanupImage(image2)
104+
return errors.New("Could not perform image diff")
105+
}
95106

96107
diffTypes, err := differs.GetAnalyzers(diffArgs)
97108
if err != nil {
98109
glog.Error(err.Error())
99-
os.Exit(1)
110+
cleanupImage(image1)
111+
cleanupImage(image2)
112+
return errors.New("Could not perform image diff")
100113
}
101-
wg.Wait()
102114

103115
req := differs.DiffRequest{image1, image2, diffTypes}
104116
if diffs, err := req.GetDiff(); err == nil {
@@ -127,34 +139,36 @@ func diffImages(image1Arg, image2Arg string, diffArgs []string) {
127139
glog.Error(err)
128140
}
129141
}
130-
fmt.Println()
131142
if !save {
132-
glog.Info("Removing image file system directories from system")
133-
errMsg := remove(image1.FSPath, true)
134-
errMsg += remove(image2.FSPath, true)
135-
if errMsg != "" {
136-
glog.Error(errMsg)
137-
}
143+
cleanupImage(image1)
144+
cleanupImage(image2)
145+
138146
} else {
139147
dir, _ := os.Getwd()
140148
glog.Infof("Images were saved at %s as %s and %s", dir, image1.FSPath, image2.FSPath)
141149
}
142150
} else {
143151
glog.Error(err.Error())
144-
os.Exit(1)
152+
cleanupImage(image1)
153+
cleanupImage(image2)
154+
return errors.New("Could not perform image diff")
145155
}
156+
157+
return nil
146158
}
147159

148-
func analyzeImage(imageArg string, analyzerArgs []string) {
160+
func analyzeImage(imageArg string, analyzerArgs []string) error {
149161
image, err := utils.ImagePrepper{imageArg}.GetImage()
150162
if err != nil {
151163
glog.Error(err.Error())
152-
os.Exit(1)
164+
cleanupImage(image)
165+
return errors.New("Could not perform image analysis")
153166
}
154167
analyzeTypes, err := differs.GetAnalyzers(analyzerArgs)
155168
if err != nil {
156169
glog.Error(err.Error())
157-
os.Exit(1)
170+
cleanupImage(image)
171+
return errors.New("Could not perform image analysis")
158172
}
159173

160174
req := differs.SingleRequest{image, analyzeTypes}
@@ -184,22 +198,29 @@ func analyzeImage(imageArg string, analyzerArgs []string) {
184198
glog.Error(err)
185199
}
186200
}
187-
fmt.Println()
188201
if !save {
189-
glog.Info("Removing image file system directory from system")
190-
errMsg := remove(image.FSPath, true)
191-
if errMsg != "" {
192-
glog.Error(errMsg)
193-
}
202+
cleanupImage(image)
194203
} else {
195204
dir, _ := os.Getwd()
196205
glog.Infof("Image was saved at %s as %s", dir, image.FSPath)
197206
}
198207
} else {
199208
glog.Error(err.Error())
200-
os.Exit(1)
209+
cleanupImage(image)
210+
return errors.New("Could not perform image analysis")
201211
}
202212

213+
return nil
214+
}
215+
216+
func cleanupImage(image utils.Image) {
217+
if reflect.DeepEqual(image, (utils.Image{})) {
218+
glog.Infof("Removing image filesystem directory %s from system", image.FSPath)
219+
errMsg := remove(image.FSPath, true)
220+
if errMsg != "" {
221+
glog.Error(errMsg)
222+
}
223+
}
203224
}
204225

205226
func getAllAnalyzers() []string {

0 commit comments

Comments
 (0)