-
Notifications
You must be signed in to change notification settings - Fork 80
/
packagescanner.go
55 lines (45 loc) · 1.45 KB
/
packagescanner.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
package indexer
import (
"context"
"github.com/quay/claircore"
)
// PackageScanner provides an interface for unique identification or a PackageScanner
// and a Scan method for extracting installed packages from an individual container layer
type PackageScanner interface {
VersionedScanner
// Scan performs a package scan on the given layer and returns all
// the found packages
Scan(context.Context, *claircore.Layer) ([]*claircore.Package, error)
}
type mockPackageScanner struct {
name string
version string
kind string
}
func (p *mockPackageScanner) Scan(context.Context, *claircore.Layer) ([]*claircore.Package, error) {
return nil, nil
}
func (p *mockPackageScanner) Name() string {
return p.name
}
func (p *mockPackageScanner) Version() string {
return p.version
}
func (p *mockPackageScanner) Kind() string {
return p.kind
}
func NewPackageScannerMock(name, version, kind string) PackageScanner {
return &mockPackageScanner{
name: name,
version: version,
kind: kind,
}
}
// DefaultRepoScanner provides a DefaultRepository method to allow Package Scanners
// to define what the default repository should be if the Scanner returned packages.
// This is useful to avoid having a dedicated RepositoryScanner for an ecosystem that
// largely duplicates the work of the PackageScanner and would always return the same
// pre-defined repository.
type DefaultRepoScanner interface {
DefaultRepository(context.Context) *claircore.Repository
}