mirror of
https://github.com/anchore/syft.git
synced 2025-11-17 16:33:21 +01:00
arrange power-user tasks ahead of parsing the source image
Signed-off-by: Alex Goodman <alex.goodman@anchore.com>
This commit is contained in:
parent
77e4c89a5a
commit
0e9c1c1d86
@ -72,6 +72,12 @@ func powerUserExecWorker(userInput string) <-chan error {
|
|||||||
go func() {
|
go func() {
|
||||||
defer close(errs)
|
defer close(errs)
|
||||||
|
|
||||||
|
tasks, err := powerUserTasks()
|
||||||
|
if err != nil {
|
||||||
|
errs <- err
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
checkForApplicationUpdate()
|
checkForApplicationUpdate()
|
||||||
|
|
||||||
src, cleanup, err := source.New(userInput)
|
src, cleanup, err := source.New(userInput)
|
||||||
@ -90,14 +96,9 @@ func powerUserExecWorker(userInput string) <-chan error {
|
|||||||
SourceMetadata: src.Metadata,
|
SourceMetadata: src.Metadata,
|
||||||
ApplicationConfig: *appConfig,
|
ApplicationConfig: *appConfig,
|
||||||
}
|
}
|
||||||
tasks, err := powerUserTasks(src)
|
|
||||||
if err != nil {
|
|
||||||
errs <- err
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, task := range tasks {
|
for _, task := range tasks {
|
||||||
if err = task(&analysisResults); err != nil {
|
if err = task(&analysisResults, src); err != nil {
|
||||||
errs <- err
|
errs <- err
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
@ -7,41 +7,36 @@ import (
|
|||||||
"github.com/anchore/syft/syft/source"
|
"github.com/anchore/syft/syft/source"
|
||||||
)
|
)
|
||||||
|
|
||||||
type powerUserTask func(*poweruser.JSONDocumentConfig) error
|
type powerUserTask func(*poweruser.JSONDocumentConfig, source.Source) error
|
||||||
|
|
||||||
func powerUserTasks(src source.Source) ([]powerUserTask, error) {
|
func powerUserTasks() ([]powerUserTask, error) {
|
||||||
var tasks []powerUserTask
|
var tasks []powerUserTask
|
||||||
var err error
|
|
||||||
var task powerUserTask
|
|
||||||
|
|
||||||
task = catalogPackagesTask(src)
|
generators := []func() (powerUserTask, error){
|
||||||
if task != nil {
|
catalogPackagesTask,
|
||||||
tasks = append(tasks, task)
|
catalogFileMetadataTask,
|
||||||
|
catalogFileDigestTask,
|
||||||
}
|
}
|
||||||
|
|
||||||
task, err = catalogFileMetadataTask(src)
|
for _, generator := range generators {
|
||||||
if err != nil {
|
task, err := generator()
|
||||||
return nil, err
|
if err != nil {
|
||||||
} else if task != nil {
|
return nil, err
|
||||||
tasks = append(tasks, task)
|
}
|
||||||
}
|
if task != nil {
|
||||||
|
tasks = append(tasks, task)
|
||||||
task, err = catalogFileDigestTask(src)
|
}
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
} else if task != nil {
|
|
||||||
tasks = append(tasks, task)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return tasks, nil
|
return tasks, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func catalogPackagesTask(src source.Source) powerUserTask {
|
func catalogPackagesTask() (powerUserTask, error) {
|
||||||
if !appConfig.Package.Cataloger.Enabled {
|
if !appConfig.Package.Cataloger.Enabled {
|
||||||
return nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
task := func(results *poweruser.JSONDocumentConfig) error {
|
task := func(results *poweruser.JSONDocumentConfig, src source.Source) error {
|
||||||
packageCatalog, theDistro, err := syft.CatalogPackages(src, appConfig.Package.Cataloger.ScopeOpt)
|
packageCatalog, theDistro, err := syft.CatalogPackages(src, appConfig.Package.Cataloger.ScopeOpt)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@ -53,21 +48,23 @@ func catalogPackagesTask(src source.Source) powerUserTask {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
return task
|
return task, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func catalogFileMetadataTask(src source.Source) (powerUserTask, error) {
|
func catalogFileMetadataTask() (powerUserTask, error) {
|
||||||
if !appConfig.FileMetadata.Cataloger.Enabled {
|
if !appConfig.FileMetadata.Cataloger.Enabled {
|
||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
resolver, err := src.FileResolver(appConfig.FileMetadata.Cataloger.ScopeOpt)
|
metadataCataloger := file.NewMetadataCataloger()
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
task := func(results *poweruser.JSONDocumentConfig) error {
|
task := func(results *poweruser.JSONDocumentConfig, src source.Source) error {
|
||||||
result, err := file.NewMetadataCataloger(resolver).Catalog()
|
resolver, err := src.FileResolver(appConfig.FileMetadata.Cataloger.ScopeOpt)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
result, err := metadataCataloger.Catalog(resolver)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -78,23 +75,23 @@ func catalogFileMetadataTask(src source.Source) (powerUserTask, error) {
|
|||||||
return task, nil
|
return task, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func catalogFileDigestTask(src source.Source) (powerUserTask, error) {
|
func catalogFileDigestTask() (powerUserTask, error) {
|
||||||
if !appConfig.FileMetadata.Cataloger.Enabled {
|
if !appConfig.FileMetadata.Cataloger.Enabled {
|
||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
resolver, err := src.FileResolver(appConfig.FileMetadata.Cataloger.ScopeOpt)
|
digestsCataloger, err := file.NewDigestsCataloger(appConfig.FileMetadata.Digests)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
cataloger, err := file.NewDigestsCataloger(resolver, appConfig.FileMetadata.Digests)
|
task := func(results *poweruser.JSONDocumentConfig, src source.Source) error {
|
||||||
if err != nil {
|
resolver, err := src.FileResolver(appConfig.FileMetadata.Cataloger.ScopeOpt)
|
||||||
return nil, err
|
if err != nil {
|
||||||
}
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
task := func(results *poweruser.JSONDocumentConfig) error {
|
result, err := digestsCataloger.Catalog(resolver)
|
||||||
result, err := cataloger.Catalog()
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user