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

Commit 21472e8

Browse files
committed
Improve coding style
* Add a shared method in getPackages for AptAnalyzer and AptLayerAnalyzer * Explicit validation of the type flag in includeLayers method
1 parent c1e1988 commit 21472e8

File tree

2 files changed

+14
-25
lines changed

2 files changed

+14
-25
lines changed

cmd/root.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,8 @@ const (
5959
RemotePrefix = "remote://"
6060
)
6161

62+
var layerAnalyzers = [...]string{"layer", "aptlayer"}
63+
6264
var RootCmd = &cobra.Command{
6365
Use: "container-diff",
6466
Short: "container-diff is a tool for analyzing and comparing container images",
@@ -268,8 +270,10 @@ func getExtractPathForName(name string) (string, error) {
268270

269271
func includeLayers() bool {
270272
for _, t := range types {
271-
if strings.Contains(t, "layer") {
272-
return true
273+
for _, a := range layerAnalyzers {
274+
if t == a {
275+
return true
276+
}
273277
}
274278
}
275279
return false

differs/apt_diff.go

Lines changed: 8 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -50,13 +50,16 @@ func (a AptAnalyzer) Analyze(image pkgutil.Image) (util.Result, error) {
5050
}
5151

5252
func (a AptAnalyzer) getPackages(image pkgutil.Image) (map[string]util.PackageInfo, error) {
53-
path := image.FSPath
53+
return readStatusFile(image.FSPath)
54+
}
55+
56+
func readStatusFile(root string) (map[string]util.PackageInfo, error) {
5457
packages := make(map[string]util.PackageInfo)
55-
if _, err := os.Stat(path); err != nil {
58+
if _, err := os.Stat(root); err != nil {
5659
// invalid image directory path
5760
return packages, err
5861
}
59-
statusFile := filepath.Join(path, dpkgStatusFile)
62+
statusFile := filepath.Join(root, dpkgStatusFile)
6063
if _, err := os.Stat(statusFile); err != nil {
6164
// status file does not exist in this layer
6265
return packages, nil
@@ -154,28 +157,10 @@ func (a AptLayerAnalyzer) getPackages(image pkgutil.Image) ([]map[string]util.Pa
154157
return packages, nil
155158
}
156159
for _, layer := range image.Layers {
157-
layerPackages := make(map[string]util.PackageInfo)
158-
if _, err := os.Stat(layer.FSPath); err != nil {
159-
// invalid layer directory path
160+
layerPackages, err := readStatusFile(layer.FSPath)
161+
if err != nil {
160162
return packages, err
161163
}
162-
statusFile := filepath.Join(layer.FSPath, dpkgStatusFile)
163-
if _, err := os.Stat(statusFile); err == nil {
164-
// this layer has a package database
165-
if file, err := os.Open(statusFile); err == nil {
166-
// make sure it gets closed
167-
defer file.Close()
168-
169-
// create a new scanner and read the file line by line
170-
scanner := bufio.NewScanner(file)
171-
var currPackage string
172-
for scanner.Scan() {
173-
currPackage = parseLine(scanner.Text(), currPackage, layerPackages)
174-
}
175-
} else {
176-
return packages, err
177-
}
178-
}
179164
packages = append(packages, layerPackages)
180165
}
181166

0 commit comments

Comments
 (0)