mirror of
https://github.com/anchore/syft.git
synced 2025-11-17 16:33:21 +01:00
feat: add use-all-catalogers flag (#1050)
This commit is contained in:
parent
d5e12ff89c
commit
2b8e15b638
@ -64,6 +64,10 @@ func CatalogPackages(src *source.Source, cfg cataloger.Config) (*pkg.Catalog, []
|
|||||||
return nil, nil, nil, fmt.Errorf("unable to determine cataloger set from scheme=%+v", src.Metadata.Scheme)
|
return nil, nil, nil, fmt.Errorf("unable to determine cataloger set from scheme=%+v", src.Metadata.Scheme)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if cataloger.RequestedAllCatalogers(cfg) {
|
||||||
|
catalogers = cataloger.AllCatalogers(cfg)
|
||||||
|
}
|
||||||
|
|
||||||
catalog, relationships, err := cataloger.Catalog(resolver, release, catalogers...)
|
catalog, relationships, err := cataloger.Catalog(resolver, release, catalogers...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, nil, err
|
return nil, nil, nil, err
|
||||||
|
|||||||
@ -27,6 +27,8 @@ import (
|
|||||||
"github.com/anchore/syft/syft/source"
|
"github.com/anchore/syft/syft/source"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const AllCatalogersPattern = "all"
|
||||||
|
|
||||||
// Cataloger describes behavior for an object to participate in parsing container image or file system
|
// Cataloger describes behavior for an object to participate in parsing container image or file system
|
||||||
// contents for the purpose of discovering Packages. Each concrete implementation should focus on discovering Packages
|
// contents for the purpose of discovering Packages. Each concrete implementation should focus on discovering Packages
|
||||||
// for a specific Package Type or ecosystem.
|
// for a specific Package Type or ecosystem.
|
||||||
@ -99,11 +101,25 @@ func AllCatalogers(cfg Config) []Cataloger {
|
|||||||
}, cfg.Catalogers)
|
}, cfg.Catalogers)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func RequestedAllCatalogers(cfg Config) bool {
|
||||||
|
for _, enableCatalogerPattern := range cfg.Catalogers {
|
||||||
|
if enableCatalogerPattern == AllCatalogersPattern {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
func filterCatalogers(catalogers []Cataloger, enabledCatalogerPatterns []string) []Cataloger {
|
func filterCatalogers(catalogers []Cataloger, enabledCatalogerPatterns []string) []Cataloger {
|
||||||
// if cataloger is not set, all applicable catalogers are enabled by default
|
// if cataloger is not set, all applicable catalogers are enabled by default
|
||||||
if len(enabledCatalogerPatterns) == 0 {
|
if len(enabledCatalogerPatterns) == 0 {
|
||||||
return catalogers
|
return catalogers
|
||||||
}
|
}
|
||||||
|
for _, enableCatalogerPattern := range enabledCatalogerPatterns {
|
||||||
|
if enableCatalogerPattern == AllCatalogersPattern {
|
||||||
|
return catalogers
|
||||||
|
}
|
||||||
|
}
|
||||||
var keepCatalogers []Cataloger
|
var keepCatalogers []Cataloger
|
||||||
for _, cataloger := range catalogers {
|
for _, cataloger := range catalogers {
|
||||||
if contains(enabledCatalogerPatterns, cataloger.Name()) {
|
if contains(enabledCatalogerPatterns, cataloger.Name()) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user