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

Commit 1edcffb

Browse files
committed
Do not implement diff command for layered analysis of packages
Remove Diff implementation of single version packages on layers, print a not supported warning message instead and raise error.
1 parent 21472e8 commit 1edcffb

File tree

3 files changed

+7
-53
lines changed

3 files changed

+7
-53
lines changed

differs/package_differs.go

Lines changed: 7 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ limitations under the License.
1717
package differs
1818

1919
import (
20+
"errors"
2021
"strings"
2122

2223
pkgutil "github.com/GoogleContainerTools/container-diff/pkg/util"
@@ -77,41 +78,11 @@ func singleVersionDiff(image1, image2 pkgutil.Image, differ SingleVersionPackage
7778
}, nil
7879
}
7980

80-
// singleVersionLayerDiff diffs the packages of each image layer by layer
81+
// singleVersionLayerDiff returns an error as this diff is not supported as
82+
// it is far from obvious to define it in meaningful way
8183
func singleVersionLayerDiff(image1, image2 pkgutil.Image, differ SingleVersionPackageLayerAnalyzer) (*util.SingleVersionPackageLayerDiffResult, error) {
82-
pack1, err := differ.getPackages(image1)
83-
if err != nil {
84-
return &util.SingleVersionPackageLayerDiffResult{}, err
85-
}
86-
pack2, err := differ.getPackages(image2)
87-
if err != nil {
88-
return &util.SingleVersionPackageLayerDiffResult{}, err
89-
}
90-
var pkgDiffs []util.PackageDiff
91-
92-
// Go through each layer for image1
93-
for i := range pack1 {
94-
if i >= len(pack2) {
95-
// Skip diff when there is no layer to compare with in image2
96-
continue
97-
}
98-
99-
pkgDiff := util.GetMapDiff(pack1[i], pack2[i])
100-
pkgDiffs = append(pkgDiffs, pkgDiff)
101-
}
102-
103-
if len(image1.Layers) != len(image2.Layers) {
104-
logrus.Infof("%s and %s have different number of layers, please consider using container-diff analyze to view the contents of each image in each layer", image1.Source, image2.Source)
105-
}
106-
107-
return &util.SingleVersionPackageLayerDiffResult{
108-
Image1: image1.Source,
109-
Image2: image2.Source,
110-
DiffType: strings.TrimSuffix(differ.Name(), "Analyzer"),
111-
Diff: util.PackageLayerDiff{
112-
PackageDiffs: pkgDiffs,
113-
},
114-
}, nil
84+
logrus.Warning("'diff' command for packages on layers is not supported, consider using 'analyze' on each image instead")
85+
return &util.SingleVersionPackageLayerDiffResult{}, errors.New("Diff for packages on layers is not supported, only analysis is supported")
11586
}
11687

11788
func multiVersionAnalysis(image pkgutil.Image, analyzer MultiVersionPackageAnalyzer) (*util.MultiVersionPackageAnalyzeResult, error) {
@@ -153,8 +124,8 @@ func singleVersionLayerAnalysis(image pkgutil.Image, analyzer SingleVersionPacka
153124

154125
// Each layer with modified packages includes a complete list of packages
155126
// in its package database. Thus we diff the current layer with the
156-
// previous one. Not all layers may include differences in packages, those
157-
// are omitted.
127+
// previous one that contains a package database. Layers that do not
128+
// include a package database are omitted.
158129
preInd := -1
159130
for i := range pack {
160131
var pkgDiff util.PackageDiff

util/format_utils.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ import (
3030

3131
var templates = map[string]string{
3232
"SingleVersionPackageDiff": SingleVersionDiffOutput,
33-
"SingleVersionPackageLayerDiff": SingleVersionLayerDiffOutput,
3433
"MultiVersionPackageDiff": MultiVersionDiffOutput,
3534
"HistDiff": HistoryDiffOutput,
3635
"MetadataDiff": MetadataDiffOutput,

util/template_utils.go

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -61,22 +61,6 @@ PACKAGE IMAGE1 ({{.Image1}}) IMAGE2 ({{.Image2}}){{range .Diff.InfoDiff}}{{"\n"}
6161
{{end}}
6262
`
6363

64-
const SingleVersionLayerDiffOutput = `
65-
-----{{.DiffType}}-----
66-
{{range $index, $diff := .Diff}}
67-
Diff for Layer {{$index}}: {{if not (or (or $diff.Packages1 $diff.Packages2) $diff.InfoDiff)}} No differences {{else}}
68-
Packages found only in {{$.Image1}}:{{if not $diff.Packages1}} None{{else}}
69-
NAME VERSION SIZE{{range $diff.Packages1}}{{"\n"}}{{print "-"}}{{.Name}} {{.Version}} {{.Size}}{{end}}{{end}}
70-
71-
Packages found only in {{$.Image2}}:{{if not $diff.Packages2}} None{{else}}
72-
NAME VERSION SIZE{{range $diff.Packages2}}{{"\n"}}{{print "-"}}{{.Name}} {{.Version}} {{.Size}}{{end}}{{end}}
73-
74-
Version differences:{{if not $diff.InfoDiff}} None{{else}}
75-
PACKAGE IMAGE1 ({{$.Image1}}) IMAGE2 ({{$.Image2}}){{range $diff.InfoDiff}}{{"\n"}}{{print "-"}}{{.Package}} {{.Info1.Version}}, {{.Info1.Size}} {{.Info2.Version}}, {{.Info2.Size}}{{end}}
76-
{{end}}{{end}}
77-
{{end}}
78-
`
79-
8064
const MultiVersionDiffOutput = `
8165
-----{{.DiffType}}-----
8266

0 commit comments

Comments
 (0)