syft/imgbom/scope/file_resolver.go
Alfredo Deza ec52e91301 scope: create interface for content and file resolvers
Signed-off-by: Alfredo Deza <adeza@anchore.com>
2020-07-02 15:12:48 -04:00

35 lines
821 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 FileContentResolver interface {
ContentResolver
FileResolver
}
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 getFileResolver(img *image.Image, option Option) (FileResolver, 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)
}
}