wire up cli config

Signed-off-by: Alex Goodman <wagoodman@users.noreply.github.com>
This commit is contained in:
Alex Goodman
2025-12-10 12:53:41 -05:00
parent 41aa6f6753
commit a05608a4c8
16 changed files with 463 additions and 175 deletions
+10 -5
View File
@@ -1,6 +1,7 @@
package task
import (
"errors"
"fmt"
"sort"
"strings"
@@ -8,7 +9,7 @@ import (
"github.com/scylladb/go-set/strset"
)
type factory func(cfg CatalogingFactoryConfig) Task
type factory func(cfg CatalogingFactoryConfig) (Task, error)
type Factories []factory
@@ -16,9 +17,13 @@ func (f Factories) Tasks(cfg CatalogingFactoryConfig) ([]Task, error) {
var allTasks []Task
taskNames := strset.New()
duplicateTaskNames := strset.New()
var err error
var errs []error
for _, fact := range f {
tsk := fact(cfg)
tsk, err := fact(cfg)
if err != nil {
errs = append(errs, err)
continue
}
if tsk == nil {
continue
}
@@ -33,8 +38,8 @@ func (f Factories) Tasks(cfg CatalogingFactoryConfig) ([]Task, error) {
if duplicateTaskNames.Size() > 0 {
names := duplicateTaskNames.List()
sort.Strings(names)
err = fmt.Errorf("duplicate cataloger task names: %v", strings.Join(names, ", "))
errs = append(errs, fmt.Errorf("duplicate cataloger task names: %v", strings.Join(names, ", ")))
}
return allTasks, err
return allTasks, errors.Join(errs...)
}
+13 -9
View File
@@ -26,8 +26,8 @@ func DefaultFileTaskFactories() Factories {
}
func newFileDigestCatalogerTaskFactory(tags ...string) factory {
return func(cfg CatalogingFactoryConfig) Task {
return newFileDigestCatalogerTask(cfg.FilesConfig.Selection, cfg.FilesConfig.Hashers, tags...)
return func(cfg CatalogingFactoryConfig) (Task, error) {
return newFileDigestCatalogerTask(cfg.FilesConfig.Selection, cfg.FilesConfig.Hashers, tags...), nil
}
}
@@ -57,8 +57,8 @@ func newFileDigestCatalogerTask(selection file.Selection, hashers []crypto.Hash,
}
func newFileMetadataCatalogerTaskFactory(tags ...string) factory {
return func(cfg CatalogingFactoryConfig) Task {
return newFileMetadataCatalogerTask(cfg.FilesConfig.Selection, tags...)
return func(cfg CatalogingFactoryConfig) (Task, error) {
return newFileMetadataCatalogerTask(cfg.FilesConfig.Selection, tags...), nil
}
}
@@ -88,8 +88,8 @@ func newFileMetadataCatalogerTask(selection file.Selection, tags ...string) Task
}
func newFileContentCatalogerTaskFactory(tags ...string) factory {
return func(cfg CatalogingFactoryConfig) Task {
return newFileContentCatalogerTask(cfg.FilesConfig.Content, tags...)
return func(cfg CatalogingFactoryConfig) (Task, error) {
return newFileContentCatalogerTask(cfg.FilesConfig.Content, tags...), nil
}
}
@@ -114,12 +114,16 @@ func newFileContentCatalogerTask(cfg filecontent.Config, tags ...string) Task {
}
func newExecutableCatalogerTaskFactory(tags ...string) factory {
return func(cfg CatalogingFactoryConfig) Task {
return func(cfg CatalogingFactoryConfig) (Task, error) {
return newExecutableCatalogerTask(cfg.FilesConfig.Selection, cfg.FilesConfig.Executable, tags...)
}
}
func newExecutableCatalogerTask(selection file.Selection, cfg executable.Config, tags ...string) Task {
func newExecutableCatalogerTask(selection file.Selection, cfg executable.Config, tags ...string) (Task, error) {
if err := cfg.Validate(); err != nil {
return nil, err
}
fn := func(ctx context.Context, resolver file.Resolver, builder sbomsync.Builder) error {
if selection == file.NoFilesSelection {
return nil
@@ -136,7 +140,7 @@ func newExecutableCatalogerTask(selection file.Selection, cfg executable.Config,
return err
}
return NewTask("file-executable-cataloger", fn, commonFileTags(tags)...)
return NewTask("file-executable-cataloger", fn, commonFileTags(tags)...), nil
}
// TODO: this should be replaced with a fix that allows passing a coordinate or location iterator to the cataloger
+4 -4
View File
@@ -21,14 +21,14 @@ import (
)
func newPackageTaskFactory(catalogerFactory func(CatalogingFactoryConfig) pkg.Cataloger, tags ...string) factory {
return func(cfg CatalogingFactoryConfig) Task {
return NewPackageTask(cfg, catalogerFactory(cfg), tags...)
return func(cfg CatalogingFactoryConfig) (Task, error) {
return NewPackageTask(cfg, catalogerFactory(cfg), tags...), nil
}
}
func newSimplePackageTaskFactory(catalogerFactory func() pkg.Cataloger, tags ...string) factory {
return func(cfg CatalogingFactoryConfig) Task {
return NewPackageTask(cfg, catalogerFactory(), tags...)
return func(cfg CatalogingFactoryConfig) (Task, error) {
return NewPackageTask(cfg, catalogerFactory(), tags...), nil
}
}