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

Commit d651789

Browse files
authored
Merge pull request #70 from dlorenc/reflect
Remove more reflect usage.
2 parents df97031 + 0ad8b96 commit d651789

File tree

8 files changed

+32
-14
lines changed

8 files changed

+32
-14
lines changed

cmd/root.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import (
77
goflag "flag"
88
"fmt"
99
"os"
10-
"reflect"
1110
"sort"
1211

1312
"github.com/GoogleCloudPlatform/container-diff/utils"
@@ -81,7 +80,7 @@ func outputResults(resultMap map[string]utils.Result) {
8180
}
8281

8382
func cleanupImage(image utils.Image) {
84-
if !reflect.DeepEqual(image, (utils.Image{})) {
83+
if image.FSPath != "" {
8584
glog.Infof("Removing image filesystem directory %s from system", image.FSPath)
8685
errMsg := remove(image.FSPath, true)
8786
if errMsg != "" {

differs/apt_diff.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,10 @@ import (
1414
type AptAnalyzer struct {
1515
}
1616

17+
func (a AptAnalyzer) Name() string {
18+
return "AptAnalyzer"
19+
}
20+
1721
// AptDiff compares the packages installed by apt-get.
1822
func (a AptAnalyzer) Diff(image1, image2 utils.Image) (utils.Result, error) {
1923
diff, err := singleVersionDiff(image1, image2, a)

differs/differs.go

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package differs
33
import (
44
"errors"
55
"fmt"
6-
"reflect"
76

87
"github.com/GoogleCloudPlatform/container-diff/utils"
98
"github.com/golang/glog"
@@ -23,6 +22,7 @@ type SingleRequest struct {
2322
type Analyzer interface {
2423
Diff(image1, image2 utils.Image) (utils.Result, error)
2524
Analyze(image utils.Image) (utils.Result, error)
25+
Name() string
2626
}
2727

2828
var analyzers = map[string]Analyzer{
@@ -40,11 +40,10 @@ func (req DiffRequest) GetDiff() (map[string]utils.Result, error) {
4040

4141
results := map[string]utils.Result{}
4242
for _, differ := range diffs {
43-
differName := reflect.TypeOf(differ).Name()
4443
if diff, err := differ.Diff(img1, img2); err == nil {
45-
results[differName] = diff
44+
results[differ.Name()] = diff
4645
} else {
47-
glog.Errorf("Error getting diff with %s: %s", differName, err)
46+
glog.Errorf("Error getting diff with %s: %s", differ.Name(), err)
4847
}
4948
}
5049

@@ -64,7 +63,7 @@ func (req SingleRequest) GetAnalysis() (map[string]utils.Result, error) {
6463

6564
results := map[string]utils.Result{}
6665
for _, analyzer := range analyses {
67-
analyzeName := reflect.TypeOf(analyzer).Name()
66+
analyzeName := analyzer.Name()
6867
if analysis, err := analyzer.Analyze(img); err == nil {
6968
results[analyzeName] = analysis
7069
} else {

differs/file_diff.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@ import (
77
type FileAnalyzer struct {
88
}
99

10+
func (a FileAnalyzer) Name() string {
11+
return "FileAnalyzer"
12+
}
13+
1014
// FileDiff diffs two packages and compares their contents
1115
func (a FileAnalyzer) Diff(image1, image2 utils.Image) (utils.Result, error) {
1216
diff, err := diffImageFiles(image1, image2)

differs/history_diff.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,10 @@ type HistDiff struct {
1414
Dels []string
1515
}
1616

17+
func (a HistoryAnalyzer) Name() string {
18+
return "HistoryAnalyzer"
19+
}
20+
1721
func (a HistoryAnalyzer) Diff(image1, image2 utils.Image) (utils.Result, error) {
1822
diff, err := getHistoryDiff(image1, image2)
1923
return &utils.HistDiffResult{

differs/node_diff.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,10 @@ import (
1414
type NodeAnalyzer struct {
1515
}
1616

17+
func (a NodeAnalyzer) Name() string {
18+
return "NodeAnalyzer"
19+
}
20+
1721
// NodeDiff compares the packages installed by apt-get.
1822
func (a NodeAnalyzer) Diff(image1, image2 utils.Image) (utils.Result, error) {
1923
diff, err := multiVersionDiff(image1, image2, a)

differs/package_differs.go

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,19 @@
11
package differs
22

33
import (
4-
"reflect"
54
"strings"
65

76
"github.com/GoogleCloudPlatform/container-diff/utils"
87
)
98

109
type MultiVersionPackageAnalyzer interface {
1110
getPackages(image utils.Image) (map[string]map[string]utils.PackageInfo, error)
11+
Name() string
1212
}
1313

1414
type SingleVersionPackageAnalyzer interface {
1515
getPackages(image utils.Image) (map[string]utils.PackageInfo, error)
16+
Name() string
1617
}
1718

1819
func multiVersionDiff(image1, image2 utils.Image, differ MultiVersionPackageAnalyzer) (*utils.MultiVersionPackageDiffResult, error) {
@@ -29,7 +30,7 @@ func multiVersionDiff(image1, image2 utils.Image, differ MultiVersionPackageAnal
2930
return &utils.MultiVersionPackageDiffResult{
3031
Image1: image1.Source,
3132
Image2: image2.Source,
32-
DiffType: strings.TrimSuffix(reflect.TypeOf(differ).Name(), "Analyzer"),
33+
DiffType: strings.TrimSuffix(differ.Name(), "Analyzer"),
3334
Diff: diff,
3435
}, nil
3536
}
@@ -48,7 +49,7 @@ func singleVersionDiff(image1, image2 utils.Image, differ SingleVersionPackageAn
4849
return &utils.SingleVersionPackageDiffResult{
4950
Image1: image1.Source,
5051
Image2: image2.Source,
51-
DiffType: strings.TrimSuffix(reflect.TypeOf(differ).Name(), "Analyzer"),
52+
DiffType: strings.TrimSuffix(differ.Name(), "Analyzer"),
5253
Diff: diff,
5354
}, nil
5455
}
@@ -61,7 +62,7 @@ func multiVersionAnalysis(image utils.Image, analyzer MultiVersionPackageAnalyze
6162

6263
analysis := utils.MultiVersionPackageAnalyzeResult{
6364
Image: image.Source,
64-
AnalyzeType: strings.TrimSuffix(reflect.TypeOf(analyzer).Name(), "Analyzer"),
65+
AnalyzeType: strings.TrimSuffix(analyzer.Name(), "Analyzer"),
6566
Analysis: pack,
6667
}
6768
return &analysis, nil
@@ -75,7 +76,7 @@ func singleVersionAnalysis(image utils.Image, analyzer SingleVersionPackageAnaly
7576

7677
analysis := utils.SingleVersionPackageAnalyzeResult{
7778
Image: image.Source,
78-
AnalyzeType: strings.TrimSuffix(reflect.TypeOf(analyzer).Name(), "Analyzer"),
79+
AnalyzeType: strings.TrimSuffix(analyzer.Name(), "Analyzer"),
7980
Analysis: pack,
8081
}
8182
return &analysis, nil

differs/pip_diff.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package differs
33
import (
44
"io/ioutil"
55
"path/filepath"
6-
"reflect"
76
"regexp"
87
"strings"
98

@@ -14,6 +13,10 @@ import (
1413
type PipAnalyzer struct {
1514
}
1615

16+
func (a PipAnalyzer) Name() string {
17+
return "PipAnalyzer"
18+
}
19+
1720
// PipDiff compares pip-installed Python packages between layers of two different images.
1821
func (a PipAnalyzer) Diff(image1, image2 utils.Image) (utils.Result, error) {
1922
diff, err := multiVersionDiff(image1, image2, a)
@@ -29,7 +32,7 @@ func (a PipAnalyzer) getPackages(image utils.Image) (map[string]map[string]utils
2932
path := image.FSPath
3033
packages := make(map[string]map[string]utils.PackageInfo)
3134
pythonPaths := []string{}
32-
if !reflect.DeepEqual(utils.ConfigSchema{}, image.Config) {
35+
if image.Config.Config.Env != nil {
3336
paths := getPythonPaths(image.Config.Config.Env)
3437
for _, p := range paths {
3538
pythonPaths = append(pythonPaths, p)

0 commit comments

Comments
 (0)