syft/imgbom/scope/file_resolver.go
Alfredo Deza 4b69758f2c scope: create a new generic Resolver interface
Signed-off-by: Alfredo Deza <adeza@anchore.com>
2020-07-15 07:53:27 -04:00

35 lines
923 B
Go

package scope
import (
"fmt"
"github.com/anchore/imgbom/imgbom/scope/resolvers"
"github.com/anchore/stereoscope/pkg/file"
"github.com/anchore/stereoscope/pkg/image"
)
type Resolver interface {
ContentResolver // knows how to get content from file.References
FileResolver // knows how to get file.References from string paths and globs
}
type ContentResolver interface {
MultipleFileContentsByRef(f ...file.Reference) (map[file.Reference]string, error)
}
type FileResolver interface {
FilesByPath(paths ...file.Path) ([]file.Reference, error)
FilesByGlob(patterns ...string) ([]file.Reference, error)
}
func getImageResolver(img *image.Image, option Option) (Resolver, error) {
switch option {
case SquashedScope:
return resolvers.NewImageSquashResolver(img)
case AllLayersScope:
return resolvers.NewAllLayersResolver(img)
default:
return nil, fmt.Errorf("bad option provided: %+v", option)
}
}