Skip to content
This repository was archived by the owner on Jul 18, 2025. It is now read-only.

Commit dcd3cef

Browse files
committed
Fix issue with detection from source
1 parent a57ba59 commit dcd3cef

File tree

3 files changed

+17
-7
lines changed

3 files changed

+17
-7
lines changed

sbom/detect/detect.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,11 +44,11 @@ func AdditionalPackages(packages []types.Package, image source.Source, lm types.
4444
return additionalPackages
4545
}
4646

47-
func stringsNodeDetector(executable string, versionEnvVar string, expr *regexp.Regexp, pkg types.Package) PackageDetector {
47+
func stringsNodeDetector(executable string, versionEnvVar string, expr *regexp.Regexp, pkg types.Package, filterFunc func(purl string) bool) PackageDetector {
4848
return func(packages []types.Package, image source.Source, lm types.LayerMapping) []types.Package {
4949
// Already found via package manager
5050
for _, p := range packages {
51-
if purl, err := types.ToPackageUrl(p.Purl); err == nil && purl.Name == pkg.Name {
51+
if filterFunc(p.Purl) {
5252
return []types.Package{}
5353
}
5454
}

sbom/detect/detect_test.go

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,22 +22,28 @@ import (
2222
stereoscopeimage "github.com/anchore/stereoscope/pkg/image"
2323
"github.com/anchore/syft/syft/source"
2424
"github.com/docker/cli/cli/command"
25+
"github.com/docker/cli/cli/flags"
2526
"github.com/docker/index-cli-plugin/registry"
2627
"github.com/docker/index-cli-plugin/types"
2728
)
2829

2930
func TestNodeDetector(t *testing.T) {
3031
cmd, _ := command.NewDockerCli()
31-
_, ociPath, _, _ := registry.SaveImage("node@sha256:2b00d259f3b07d8aa694b298a7dcf4655571aea2ab91375b5adb8e5a905d3ee2", cmd.Client())
32+
cmd.Initialize(flags.NewClientOptions())
33+
cache, _ := registry.SaveImage("atomist/skill@sha256:a691a1ccfa81ab7cc6b422a53bfb9bbcea4d78873426b0389eec8f554da9b0b8", cmd)
34+
cache.StoreImage()
3235
lm := types.LayerMapping{
3336
ByDiffId: make(map[string]string),
3437
}
3538
i := source.Input{
3639
Scheme: source.ImageScheme,
37-
ImageSource: stereoscopeimage.DockerTarballSource,
38-
Location: ociPath + "/archive.tar",
40+
ImageSource: stereoscopeimage.OciDirectorySource,
41+
Location: cache.ImagePath,
42+
}
43+
src, _, err := source.New(i, nil, nil)
44+
if err != nil {
45+
t.Fail()
3946
}
40-
src, _, _ := source.New(i, nil, nil)
4147
packages := nodePackageDetector()([]types.Package{}, *src, lm)
4248
if len(packages) != 1 {
4349
t.Errorf("Expected package missing")

sbom/detect/node.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,5 +33,9 @@ func nodePackageDetector() PackageDetector {
3333
Licenses: []string{"MIT"},
3434
Url: "https://nodejs.org",
3535
}
36-
return stringsNodeDetector("node", "NODE_VERSION", expr, pkg)
36+
filter := func(purl string) bool {
37+
pkg, _ := types.ToPackageUrl(purl)
38+
return pkg.Name == "nodejs" || pkg.Name == "node"
39+
}
40+
return stringsNodeDetector("node", "NODE_VERSION", expr, pkg, filter)
3741
}

0 commit comments

Comments
 (0)