mirror of
https://github.com/anchore/syft.git
synced 2025-11-18 08:53:15 +01:00
* add query by MIME type to source.FileResolver Signed-off-by: Alex Goodman <alex.goodman@anchore.com> * import stereoscope lib changes to find mime type - add bin cataloger - add bin parser - add mime type go utils - import new resolver Signed-off-by: Christopher Angelo Phillips <christopher.phillips@anchore.com> * add go std library code to unpack bin - keep them in their own (original) files - add note for "this code was copied from" - comment the lines the required changing Signed-off-by: Christopher Angelo Phillips <christopher.phillips@anchore.com> Co-authored-by: Alex Goodman <alex.goodman@anchore.com>
42 lines
1.5 KiB
Go
42 lines
1.5 KiB
Go
package source
|
|
|
|
import (
|
|
"io"
|
|
)
|
|
|
|
// FileResolver is an interface that encompasses how to get specific file references and file contents for a generic data source.
|
|
type FileResolver interface {
|
|
FileContentResolver
|
|
FilePathResolver
|
|
FileLocationResolver
|
|
FileMetadataResolver
|
|
}
|
|
|
|
// FileContentResolver knows how to get file content for a given Location
|
|
type FileContentResolver interface {
|
|
FileContentsByLocation(Location) (io.ReadCloser, error)
|
|
}
|
|
|
|
type FileMetadataResolver interface {
|
|
FileMetadataByLocation(Location) (FileMetadata, error)
|
|
}
|
|
|
|
// FilePathResolver knows how to get a Location for given string paths and globs
|
|
type FilePathResolver interface {
|
|
// HasPath indicates if the given path exists in the underlying source.
|
|
HasPath(string) bool
|
|
// FilesByPath fetches a set of file references which have the given path (for an image, there may be multiple matches)
|
|
FilesByPath(paths ...string) ([]Location, error)
|
|
// FilesByGlob fetches a set of file references which the given glob matches
|
|
FilesByGlob(patterns ...string) ([]Location, error)
|
|
// FilesByMIMEType fetches a set of file references which the contents have been classified as one of the given MIME Types
|
|
FilesByMIMEType(types ...string) ([]Location, error)
|
|
// RelativeFileByPath fetches a single file at the given path relative to the layer squash of the given reference.
|
|
// This is helpful when attempting to find a file that is in the same layer or lower as another file.
|
|
RelativeFileByPath(_ Location, path string) *Location
|
|
}
|
|
|
|
type FileLocationResolver interface {
|
|
AllLocations() <-chan Location
|
|
}
|