mirror of
https://github.com/anchore/syft.git
synced 2025-11-17 16:33:21 +01:00
107 lines
2.2 KiB
Go
107 lines
2.2 KiB
Go
package cmd
|
|
|
|
import (
|
|
"github.com/anchore/syft/internal/presenter/poweruser"
|
|
"github.com/anchore/syft/syft"
|
|
"github.com/anchore/syft/syft/file"
|
|
"github.com/anchore/syft/syft/source"
|
|
)
|
|
|
|
type powerUserTask func(*poweruser.JSONDocumentConfig) error
|
|
|
|
func powerUserTasks(src source.Source) ([]powerUserTask, error) {
|
|
var tasks []powerUserTask
|
|
var err error
|
|
var task powerUserTask
|
|
|
|
task = catalogPackagesTask(src)
|
|
if task != nil {
|
|
tasks = append(tasks, task)
|
|
}
|
|
|
|
task, err = catalogFileMetadataTask(src)
|
|
if err != nil {
|
|
return nil, err
|
|
} else 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
|
|
}
|
|
|
|
func catalogPackagesTask(src source.Source) powerUserTask {
|
|
if !appConfig.Package.Cataloger.Enabled {
|
|
return nil
|
|
}
|
|
|
|
task := func(results *poweruser.JSONDocumentConfig) error {
|
|
packageCatalog, theDistro, err := syft.CatalogPackages(src, appConfig.Package.Cataloger.ScopeOpt)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
results.PackageCatalog = packageCatalog
|
|
results.Distro = theDistro
|
|
|
|
return nil
|
|
}
|
|
|
|
return task
|
|
}
|
|
|
|
func catalogFileMetadataTask(src source.Source) (powerUserTask, error) {
|
|
if !appConfig.FileMetadata.Cataloger.Enabled {
|
|
return nil, nil
|
|
}
|
|
|
|
resolver, err := src.FileResolver(appConfig.FileMetadata.Cataloger.ScopeOpt)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
task := func(results *poweruser.JSONDocumentConfig) error {
|
|
result, err := file.NewMetadataCataloger(resolver).Catalog()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
results.FileMetadata = result
|
|
return nil
|
|
}
|
|
|
|
return task, nil
|
|
}
|
|
|
|
func catalogFileDigestTask(src source.Source) (powerUserTask, error) {
|
|
if !appConfig.FileMetadata.Cataloger.Enabled {
|
|
return nil, nil
|
|
}
|
|
|
|
resolver, err := src.FileResolver(appConfig.FileMetadata.Cataloger.ScopeOpt)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
cataloger, err := file.NewDigestsCataloger(resolver, appConfig.FileMetadata.Digests)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
task := func(results *poweruser.JSONDocumentConfig) error {
|
|
result, err := cataloger.Catalog()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
results.FileDigests = result
|
|
return nil
|
|
}
|
|
|
|
return task, nil
|
|
}
|