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

Commit 13059cc

Browse files
committed
Adding sorting methods to output
1 parent 9b3ea71 commit 13059cc

File tree

10 files changed

+365
-120
lines changed

10 files changed

+365
-120
lines changed

cmd/root.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -123,11 +123,11 @@ func diffImages(image1Arg, image2Arg string, diffArgs []string) error {
123123
}
124124
sort.Strings(sortedTypes)
125125
glog.Info("Retrieving diffs")
126-
diffResults := []utils.DiffResult{}
126+
diffResults := []utils.Result{}
127127
for _, diffType := range sortedTypes {
128128
diff := diffs[diffType]
129129
if json {
130-
diffResults = append(diffResults, diff.GetStruct())
130+
diffResults = append(diffResults, diff.GetStruct().(utils.Result))
131131
} else {
132132
err = diff.OutputText(diffType)
133133
if err != nil {
@@ -182,11 +182,11 @@ func analyzeImage(imageArg string, analyzerArgs []string) error {
182182
}
183183
sort.Strings(sortedTypes)
184184
glog.Info("Retrieving diffs")
185-
analyzeResults := []utils.AnalyzeResult{}
185+
analyzeResults := []utils.Result{}
186186
for _, analyzeType := range sortedTypes {
187187
analysis := analyses[analyzeType]
188188
if json {
189-
analyzeResults = append(analyzeResults, analysis.GetStruct())
189+
analyzeResults = append(analyzeResults, analysis.GetStruct().(utils.Result))
190190
} else {
191191
err = analysis.OutputText(analyzeType)
192192
if err != nil {
@@ -313,4 +313,5 @@ func init() {
313313
RootCmd.Flags().BoolVarP(&file, "file", "f", false, "Set this flag to use the file differ.")
314314
RootCmd.Flags().BoolVarP(&history, "history", "d", false, "Set this flag to use the dockerfile history differ.")
315315
RootCmd.Flags().BoolVarP(&save, "save", "s", false, "Set this flag to save rather than remove the final image filesystems on exit.")
316+
RootCmd.Flags().BoolVarP(&utils.SortSize, "order", "o", false, "Set this flag to sort any file/package results by descending size. Otherwise, they will be sorted by name.")
316317
}

differs/aptDiff.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,12 @@ type AptAnalyzer struct {
1515
}
1616

1717
// AptDiff compares the packages installed by apt-get.
18-
func (a AptAnalyzer) Diff(image1, image2 utils.Image) (utils.DiffResult, error) {
18+
func (a AptAnalyzer) Diff(image1, image2 utils.Image) (utils.Result, error) {
1919
diff, err := singleVersionDiff(image1, image2, a)
2020
return diff, err
2121
}
2222

23-
func (a AptAnalyzer) Analyze(image utils.Image) (utils.AnalyzeResult, error) {
23+
func (a AptAnalyzer) Analyze(image utils.Image) (utils.Result, error) {
2424
analysis, err := singleVersionAnalysis(image, a)
2525
return analysis, err
2626
}

differs/differs.go

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ type SingleRequest struct {
2121
}
2222

2323
type Analyzer interface {
24-
Diff(image1, image2 utils.Image) (utils.DiffResult, error)
25-
Analyze(image utils.Image) (utils.AnalyzeResult, error)
24+
Diff(image1, image2 utils.Image) (utils.Result, error)
25+
Analyze(image utils.Image) (utils.Result, error)
2626
}
2727

2828
var analyzers = map[string]Analyzer{
@@ -33,12 +33,20 @@ var analyzers = map[string]Analyzer{
3333
"node": NodeAnalyzer{},
3434
}
3535

36-
func (req DiffRequest) GetDiff() (map[string]utils.DiffResult, error) {
36+
/*var diffResultMap = map[string]utils.DiffResult{
37+
"HistoryAnalyzer": utils.HistDiffResult,
38+
"FileAnalyzer": utils.DirDiffResult,
39+
"AptAnalyzer": utils.SingleVersionPackageDiffResult,
40+
"PipAnalyzer": utils.MultiVersionPackageDiffResult,
41+
"NodeAnalyzer": utils.MultiVersionPackageDiffResult,
42+
}*/
43+
44+
func (req DiffRequest) GetDiff() (map[string]utils.Result, error) {
3745
img1 := req.Image1
3846
img2 := req.Image2
3947
diffs := req.DiffTypes
4048

41-
results := map[string]utils.DiffResult{}
49+
results := map[string]utils.Result{}
4250
for _, differ := range diffs {
4351
differName := reflect.TypeOf(differ).Name()
4452
if diff, err := differ.Diff(img1, img2); err == nil {
@@ -58,11 +66,11 @@ func (req DiffRequest) GetDiff() (map[string]utils.DiffResult, error) {
5866
return results, err
5967
}
6068

61-
func (req SingleRequest) GetAnalysis() (map[string]utils.AnalyzeResult, error) {
69+
func (req SingleRequest) GetAnalysis() (map[string]utils.Result, error) {
6270
img := req.Image
6371
analyses := req.AnalyzeTypes
6472

65-
results := map[string]utils.AnalyzeResult{}
73+
results := map[string]utils.Result{}
6674
for _, analyzer := range analyses {
6775
analyzeName := reflect.TypeOf(analyzer).Name()
6876
if analysis, err := analyzer.Analyze(img); err == nil {

differs/fileDiff.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ type FileAnalyzer struct {
88
}
99

1010
// FileDiff diffs two packages and compares their contents
11-
func (a FileAnalyzer) Diff(image1, image2 utils.Image) (utils.DiffResult, error) {
11+
func (a FileAnalyzer) Diff(image1, image2 utils.Image) (utils.Result, error) {
1212
diff, err := diffImageFiles(image1, image2)
1313
return &utils.DirDiffResult{
1414
Image1: image1.Source,
@@ -18,7 +18,7 @@ func (a FileAnalyzer) Diff(image1, image2 utils.Image) (utils.DiffResult, error)
1818
}, err
1919
}
2020

21-
func (a FileAnalyzer) Analyze(image utils.Image) (utils.AnalyzeResult, error) {
21+
func (a FileAnalyzer) Analyze(image utils.Image) (utils.Result, error) {
2222
var result utils.FileAnalyzeResult
2323

2424
imgDir, err := utils.GetDirectory(image.FSPath, true)

differs/historyDiff.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import (
99
type HistoryAnalyzer struct {
1010
}
1111

12-
func (a HistoryAnalyzer) Diff(image1, image2 utils.Image) (utils.DiffResult, error) {
12+
func (a HistoryAnalyzer) Diff(image1, image2 utils.Image) (utils.Result, error) {
1313
diff, err := getHistoryDiff(image1, image2)
1414
return &utils.HistDiffResult{
1515
Image1: image1.Source,
@@ -19,7 +19,7 @@ func (a HistoryAnalyzer) Diff(image1, image2 utils.Image) (utils.DiffResult, err
1919
}, err
2020
}
2121

22-
func (a HistoryAnalyzer) Analyze(image utils.Image) (utils.AnalyzeResult, error) {
22+
func (a HistoryAnalyzer) Analyze(image utils.Image) (utils.Result, error) {
2323
history := getHistoryList(image.Config.History)
2424
result := utils.ListAnalyzeResult{
2525
Image: image.Source,

differs/nodeDiff.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,12 @@ type NodeAnalyzer struct {
1515
}
1616

1717
// NodeDiff compares the packages installed by apt-get.
18-
func (a NodeAnalyzer) Diff(image1, image2 utils.Image) (utils.DiffResult, error) {
18+
func (a NodeAnalyzer) Diff(image1, image2 utils.Image) (utils.Result, error) {
1919
diff, err := multiVersionDiff(image1, image2, a)
2020
return diff, err
2121
}
2222

23-
func (a NodeAnalyzer) Analyze(image utils.Image) (utils.AnalyzeResult, error) {
23+
func (a NodeAnalyzer) Analyze(image utils.Image) (utils.Result, error) {
2424
analysis, err := multiVersionAnalysis(image, a)
2525
return analysis, err
2626
}

differs/package_differs.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ type SingleVersionPackageAnalyzer interface {
1515
getPackages(image utils.Image) (map[string]utils.PackageInfo, error)
1616
}
1717

18-
func multiVersionDiff(image1, image2 utils.Image, differ MultiVersionPackageAnalyzer) (utils.DiffResult, error) {
18+
func multiVersionDiff(image1, image2 utils.Image, differ MultiVersionPackageAnalyzer) (*utils.MultiVersionPackageDiffResult, error) {
1919
pack1, err := differ.getPackages(image1)
2020
if err != nil {
2121
return &utils.MultiVersionPackageDiffResult{}, err
@@ -34,7 +34,7 @@ func multiVersionDiff(image1, image2 utils.Image, differ MultiVersionPackageAnal
3434
}, nil
3535
}
3636

37-
func singleVersionDiff(image1, image2 utils.Image, differ SingleVersionPackageAnalyzer) (utils.DiffResult, error) {
37+
func singleVersionDiff(image1, image2 utils.Image, differ SingleVersionPackageAnalyzer) (*utils.SingleVersionPackageDiffResult, error) {
3838
pack1, err := differ.getPackages(image1)
3939
if err != nil {
4040
return &utils.SingleVersionPackageDiffResult{}, err
@@ -53,7 +53,7 @@ func singleVersionDiff(image1, image2 utils.Image, differ SingleVersionPackageAn
5353
}, nil
5454
}
5555

56-
func multiVersionAnalysis(image utils.Image, analyzer MultiVersionPackageAnalyzer) (utils.AnalyzeResult, error) {
56+
func multiVersionAnalysis(image utils.Image, analyzer MultiVersionPackageAnalyzer) (*utils.MultiVersionPackageAnalyzeResult, error) {
5757
pack, err := analyzer.getPackages(image)
5858
if err != nil {
5959
return &utils.MultiVersionPackageAnalyzeResult{}, err
@@ -67,7 +67,7 @@ func multiVersionAnalysis(image utils.Image, analyzer MultiVersionPackageAnalyze
6767
return &analysis, nil
6868
}
6969

70-
func singleVersionAnalysis(image utils.Image, analyzer SingleVersionPackageAnalyzer) (utils.AnalyzeResult, error) {
70+
func singleVersionAnalysis(image utils.Image, analyzer SingleVersionPackageAnalyzer) (*utils.SingleVersionPackageAnalyzeResult, error) {
7171
pack, err := analyzer.getPackages(image)
7272
if err != nil {
7373
return &utils.SingleVersionPackageAnalyzeResult{}, err

differs/pipDiff.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,12 @@ type PipAnalyzer struct {
1515
}
1616

1717
// PipDiff compares pip-installed Python packages between layers of two different images.
18-
func (a PipAnalyzer) Diff(image1, image2 utils.Image) (utils.DiffResult, error) {
18+
func (a PipAnalyzer) Diff(image1, image2 utils.Image) (utils.Result, error) {
1919
diff, err := multiVersionDiff(image1, image2, a)
2020
return diff, err
2121
}
2222

23-
func (a PipAnalyzer) Analyze(image utils.Image) (utils.AnalyzeResult, error) {
23+
func (a PipAnalyzer) Analyze(image utils.Image) (utils.Result, error) {
2424
analysis, err := multiVersionAnalysis(image, a)
2525
return analysis, err
2626
}

0 commit comments

Comments
 (0)