mirror of
https://github.com/anchore/syft.git
synced 2026-02-12 02:26:42 +01:00
call file config validate in cli post load
Signed-off-by: Alex Goodman <wagoodman@users.noreply.github.com>
This commit is contained in:
parent
a05608a4c8
commit
703edff876
@ -303,6 +303,11 @@ func (cfg *Catalog) PostLoad() error {
|
||||
return fmt.Errorf("cannot enable exclude-binary-overlap-by-ownership without enabling package-file-ownership-overlap")
|
||||
}
|
||||
|
||||
// validate file executable options
|
||||
if err := cfg.ToFilesConfig().Executable.Validate(); err != nil {
|
||||
return fmt.Errorf("invalid file executable configuration: %w", err)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
|
||||
@ -31,8 +31,7 @@ func TestAllPackageCatalogersReachableInTasks(t *testing.T) {
|
||||
taskFactories := task.DefaultPackageTaskFactories()
|
||||
taskTagsByName := make(map[string][]string)
|
||||
for _, factory := range taskFactories {
|
||||
tsk, err := factory(task.DefaultCatalogingFactoryConfig())
|
||||
require.NoError(t, err)
|
||||
tsk := factory(task.DefaultCatalogingFactoryConfig())
|
||||
if taskTagsByName[tsk.Name()] != nil {
|
||||
t.Fatalf("duplicate task name: %q", tsk.Name())
|
||||
}
|
||||
|
||||
@ -1,7 +1,6 @@
|
||||
package task
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"sort"
|
||||
"strings"
|
||||
@ -9,7 +8,7 @@ import (
|
||||
"github.com/scylladb/go-set/strset"
|
||||
)
|
||||
|
||||
type factory func(cfg CatalogingFactoryConfig) (Task, error)
|
||||
type factory func(cfg CatalogingFactoryConfig) Task
|
||||
|
||||
type Factories []factory
|
||||
|
||||
@ -17,13 +16,9 @@ func (f Factories) Tasks(cfg CatalogingFactoryConfig) ([]Task, error) {
|
||||
var allTasks []Task
|
||||
taskNames := strset.New()
|
||||
duplicateTaskNames := strset.New()
|
||||
var errs []error
|
||||
var err error
|
||||
for _, fact := range f {
|
||||
tsk, err := fact(cfg)
|
||||
if err != nil {
|
||||
errs = append(errs, err)
|
||||
continue
|
||||
}
|
||||
tsk := fact(cfg)
|
||||
if tsk == nil {
|
||||
continue
|
||||
}
|
||||
@ -38,8 +33,8 @@ func (f Factories) Tasks(cfg CatalogingFactoryConfig) ([]Task, error) {
|
||||
if duplicateTaskNames.Size() > 0 {
|
||||
names := duplicateTaskNames.List()
|
||||
sort.Strings(names)
|
||||
errs = append(errs, fmt.Errorf("duplicate cataloger task names: %v", strings.Join(names, ", ")))
|
||||
err = fmt.Errorf("duplicate cataloger task names: %v", strings.Join(names, ", "))
|
||||
}
|
||||
|
||||
return allTasks, errors.Join(errs...)
|
||||
return allTasks, err
|
||||
}
|
||||
|
||||
@ -26,8 +26,8 @@ func DefaultFileTaskFactories() Factories {
|
||||
}
|
||||
|
||||
func newFileDigestCatalogerTaskFactory(tags ...string) factory {
|
||||
return func(cfg CatalogingFactoryConfig) (Task, error) {
|
||||
return newFileDigestCatalogerTask(cfg.FilesConfig.Selection, cfg.FilesConfig.Hashers, tags...), nil
|
||||
return func(cfg CatalogingFactoryConfig) Task {
|
||||
return newFileDigestCatalogerTask(cfg.FilesConfig.Selection, cfg.FilesConfig.Hashers, tags...)
|
||||
}
|
||||
}
|
||||
|
||||
@ -57,8 +57,8 @@ func newFileDigestCatalogerTask(selection file.Selection, hashers []crypto.Hash,
|
||||
}
|
||||
|
||||
func newFileMetadataCatalogerTaskFactory(tags ...string) factory {
|
||||
return func(cfg CatalogingFactoryConfig) (Task, error) {
|
||||
return newFileMetadataCatalogerTask(cfg.FilesConfig.Selection, tags...), nil
|
||||
return func(cfg CatalogingFactoryConfig) Task {
|
||||
return newFileMetadataCatalogerTask(cfg.FilesConfig.Selection, tags...)
|
||||
}
|
||||
}
|
||||
|
||||
@ -88,8 +88,8 @@ func newFileMetadataCatalogerTask(selection file.Selection, tags ...string) Task
|
||||
}
|
||||
|
||||
func newFileContentCatalogerTaskFactory(tags ...string) factory {
|
||||
return func(cfg CatalogingFactoryConfig) (Task, error) {
|
||||
return newFileContentCatalogerTask(cfg.FilesConfig.Content, tags...), nil
|
||||
return func(cfg CatalogingFactoryConfig) Task {
|
||||
return newFileContentCatalogerTask(cfg.FilesConfig.Content, tags...)
|
||||
}
|
||||
}
|
||||
|
||||
@ -114,16 +114,12 @@ func newFileContentCatalogerTask(cfg filecontent.Config, tags ...string) Task {
|
||||
}
|
||||
|
||||
func newExecutableCatalogerTaskFactory(tags ...string) factory {
|
||||
return func(cfg CatalogingFactoryConfig) (Task, error) {
|
||||
return func(cfg CatalogingFactoryConfig) Task {
|
||||
return newExecutableCatalogerTask(cfg.FilesConfig.Selection, cfg.FilesConfig.Executable, tags...)
|
||||
}
|
||||
}
|
||||
|
||||
func newExecutableCatalogerTask(selection file.Selection, cfg executable.Config, tags ...string) (Task, error) {
|
||||
if err := cfg.Validate(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
func newExecutableCatalogerTask(selection file.Selection, cfg executable.Config, tags ...string) Task {
|
||||
fn := func(ctx context.Context, resolver file.Resolver, builder sbomsync.Builder) error {
|
||||
if selection == file.NoFilesSelection {
|
||||
return nil
|
||||
@ -140,7 +136,7 @@ func newExecutableCatalogerTask(selection file.Selection, cfg executable.Config,
|
||||
return err
|
||||
}
|
||||
|
||||
return NewTask("file-executable-cataloger", fn, commonFileTags(tags)...), nil
|
||||
return NewTask("file-executable-cataloger", fn, commonFileTags(tags)...)
|
||||
}
|
||||
|
||||
// TODO: this should be replaced with a fix that allows passing a coordinate or location iterator to the cataloger
|
||||
|
||||
@ -21,14 +21,14 @@ import (
|
||||
)
|
||||
|
||||
func newPackageTaskFactory(catalogerFactory func(CatalogingFactoryConfig) pkg.Cataloger, tags ...string) factory {
|
||||
return func(cfg CatalogingFactoryConfig) (Task, error) {
|
||||
return NewPackageTask(cfg, catalogerFactory(cfg), tags...), nil
|
||||
return func(cfg CatalogingFactoryConfig) Task {
|
||||
return NewPackageTask(cfg, catalogerFactory(cfg), tags...)
|
||||
}
|
||||
}
|
||||
|
||||
func newSimplePackageTaskFactory(catalogerFactory func() pkg.Cataloger, tags ...string) factory {
|
||||
return func(cfg CatalogingFactoryConfig) (Task, error) {
|
||||
return NewPackageTask(cfg, catalogerFactory(), tags...), nil
|
||||
return func(cfg CatalogingFactoryConfig) Task {
|
||||
return NewPackageTask(cfg, catalogerFactory(), tags...)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -48,7 +48,7 @@ type SymbolConfig struct {
|
||||
|
||||
// Types are the types of Go symbols to capture, relative to `go tool nm` output (e.g. T, t, R, r, D, d, B, b, C, U, etc).
|
||||
// If empty, all symbol types are captured.
|
||||
Types []string
|
||||
Types []string `json:"types" yaml:"types" mapstructure:"types"`
|
||||
|
||||
// Go configures Go-specific symbol capturing settings.
|
||||
Go GoSymbolConfig `json:"go" yaml:"go" mapstructure:"go"`
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user