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

Commit 9d4ef87

Browse files
committed
Addressing Nick's comments
1 parent 414dd3a commit 9d4ef87

File tree

1 file changed

+51
-28
lines changed

1 file changed

+51
-28
lines changed

cmd/root.go

Lines changed: 51 additions & 28 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

@@ -35,9 +36,9 @@ var analyzeFlagMap = map[string]*bool{
3536
}
3637

3738
var RootCmd = &cobra.Command{
38-
Use: "[image1] [image2]",
39-
Short: "Compare two images.",
40-
Long: `Compares two images using the specifed differs as indicated via flags (see documentation for available differs).`,
39+
Use: "To analyze a single image: [image]. To compare two images: [image1] [image2]",
40+
Short: "Analyze a single image or compare two images.",
41+
Long: `Analyzes a single image or compares two images using the specifed analyzers/differs as indicated via flags (see documentation for available ones).`,
4142
Run: func(cmd *cobra.Command, args []string) {
4243
if validArgs, err := validateArgs(args); !validArgs {
4344
glog.Error(err.Error())
@@ -59,15 +60,23 @@ var RootCmd = &cobra.Command{
5960
analyzeArgs = allAnalyzers
6061
}
6162

63+
var err error
64+
// In the case of one image, "analyzes" it
65+
// In the case of two images, takes their "diff"
6266
if len(args) == 1 {
63-
analyzeImage(args[0], analyzeArgs)
67+
err = analyzeImage(args[0], analyzeArgs)
6468
} else {
65-
diffImages(args[0], args[1], analyzeArgs)
69+
err = diffImages(args[0], args[1], analyzeArgs)
70+
}
71+
72+
if err != nil {
73+
glog.Error(err)
74+
os.Exit(1)
6675
}
6776
},
6877
}
6978

70-
func diffImages(image1Arg, image2Arg string, diffArgs []string) {
79+
func diffImages(image1Arg, image2Arg string, diffArgs []string) error {
7180
var wg sync.WaitGroup
7281
wg.Add(2)
7382

@@ -80,7 +89,6 @@ func diffImages(image1Arg, image2Arg string, diffArgs []string) {
8089
image1, err = utils.ImagePrepper{image1Arg}.GetImage()
8190
if err != nil {
8291
glog.Error(err.Error())
83-
os.Exit(1)
8492
}
8593
}()
8694

@@ -89,16 +97,22 @@ func diffImages(image1Arg, image2Arg string, diffArgs []string) {
8997
image2, err = utils.ImagePrepper{image2Arg}.GetImage()
9098
if err != nil {
9199
glog.Error(err.Error())
92-
os.Exit(1)
93100
}
94101
}()
102+
wg.Wait()
103+
if err != nil {
104+
cleanupImage(image1)
105+
cleanupImage(image2)
106+
return errors.New("Could not perform image diff")
107+
}
95108

96109
diffTypes, err := differs.GetAnalyzers(diffArgs)
97110
if err != nil {
98111
glog.Error(err.Error())
99-
os.Exit(1)
112+
cleanupImage(image1)
113+
cleanupImage(image2)
114+
return errors.New("Could not perform image diff")
100115
}
101-
wg.Wait()
102116

103117
req := differs.DiffRequest{image1, image2, diffTypes}
104118
if diffs, err := req.GetDiff(); err == nil {
@@ -127,34 +141,36 @@ func diffImages(image1Arg, image2Arg string, diffArgs []string) {
127141
glog.Error(err)
128142
}
129143
}
130-
fmt.Println()
131144
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-
}
145+
cleanupImage(image1)
146+
cleanupImage(image2)
147+
138148
} else {
139149
dir, _ := os.Getwd()
140150
glog.Infof("Images were saved at %s as %s and %s", dir, image1.FSPath, image2.FSPath)
141151
}
142152
} else {
143153
glog.Error(err.Error())
144-
os.Exit(1)
154+
cleanupImage(image1)
155+
cleanupImage(image2)
156+
return errors.New("Could not perform image diff")
145157
}
158+
159+
return nil
146160
}
147161

148-
func analyzeImage(imageArg string, analyzerArgs []string) {
162+
func analyzeImage(imageArg string, analyzerArgs []string) error {
149163
image, err := utils.ImagePrepper{imageArg}.GetImage()
150164
if err != nil {
151165
glog.Error(err.Error())
152-
os.Exit(1)
166+
cleanupImage(image)
167+
return errors.New("Could not perform image analysis")
153168
}
154169
analyzeTypes, err := differs.GetAnalyzers(analyzerArgs)
155170
if err != nil {
156171
glog.Error(err.Error())
157-
os.Exit(1)
172+
cleanupImage(image)
173+
return errors.New("Could not perform image analysis")
158174
}
159175

160176
req := differs.SingleRequest{image, analyzeTypes}
@@ -184,22 +200,29 @@ func analyzeImage(imageArg string, analyzerArgs []string) {
184200
glog.Error(err)
185201
}
186202
}
187-
fmt.Println()
188203
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-
}
204+
cleanupImage(image)
194205
} else {
195206
dir, _ := os.Getwd()
196207
glog.Infof("Image was saved at %s as %s", dir, image.FSPath)
197208
}
198209
} else {
199210
glog.Error(err.Error())
200-
os.Exit(1)
211+
cleanupImage(image)
212+
return errors.New("Could not perform image analysis")
201213
}
202214

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

205228
func getAllAnalyzers() []string {

0 commit comments

Comments
 (0)