github.com/devseccon/trivy@v0.47.1-0.20231123133102-bd902a0bd996/pkg/commands/artifact/inject.go (about) 1 //go:build wireinject 2 // +build wireinject 3 4 package artifact 5 6 import ( 7 "context" 8 "github.com/devseccon/trivy/pkg/fanal/artifact/vm" 9 10 "github.com/google/wire" 11 12 "github.com/devseccon/trivy/pkg/fanal/artifact" 13 "github.com/devseccon/trivy/pkg/fanal/cache" 14 "github.com/devseccon/trivy/pkg/fanal/types" 15 "github.com/devseccon/trivy/pkg/rpc/client" 16 "github.com/devseccon/trivy/pkg/scanner" 17 ) 18 19 ////////////// 20 // Standalone 21 ////////////// 22 23 // initializeImageScanner is for container image scanning in standalone mode 24 // e.g. dockerd, container registry, podman, etc. 25 func initializeImageScanner(ctx context.Context, imageName string, artifactCache cache.ArtifactCache, 26 localArtifactCache cache.LocalArtifactCache, imageOpt types.ImageOptions, artifactOption artifact.Option) ( 27 scanner.Scanner, func(), error) { 28 wire.Build(scanner.StandaloneDockerSet) 29 return scanner.Scanner{}, nil, nil 30 } 31 32 // initializeArchiveScanner is for container image archive scanning in standalone mode 33 // e.g. docker save -o alpine.tar alpine:3.15 34 func initializeArchiveScanner(ctx context.Context, filePath string, artifactCache cache.ArtifactCache, 35 localArtifactCache cache.LocalArtifactCache, artifactOption artifact.Option) (scanner.Scanner, error) { 36 wire.Build(scanner.StandaloneArchiveSet) 37 return scanner.Scanner{}, nil 38 } 39 40 // initializeFilesystemScanner is for filesystem scanning in standalone mode 41 func initializeFilesystemScanner(ctx context.Context, path string, artifactCache cache.ArtifactCache, 42 localArtifactCache cache.LocalArtifactCache, artifactOption artifact.Option) (scanner.Scanner, func(), error) { 43 wire.Build(scanner.StandaloneFilesystemSet) 44 return scanner.Scanner{}, nil, nil 45 } 46 47 func initializeRepositoryScanner(ctx context.Context, url string, artifactCache cache.ArtifactCache, 48 localArtifactCache cache.LocalArtifactCache, artifactOption artifact.Option) (scanner.Scanner, func(), error) { 49 wire.Build(scanner.StandaloneRepositorySet) 50 return scanner.Scanner{}, nil, nil 51 } 52 53 func initializeSBOMScanner(ctx context.Context, filePath string, artifactCache cache.ArtifactCache, 54 localArtifactCache cache.LocalArtifactCache, artifactOption artifact.Option) (scanner.Scanner, func(), error) { 55 wire.Build(scanner.StandaloneSBOMSet) 56 return scanner.Scanner{}, nil, nil 57 } 58 59 func initializeVMScanner(ctx context.Context, filePath string, artifactCache cache.ArtifactCache, 60 localArtifactCache cache.LocalArtifactCache, walker vm.Walker, artifactOption artifact.Option) ( 61 scanner.Scanner, func(), error) { 62 wire.Build(scanner.StandaloneVMSet) 63 return scanner.Scanner{}, nil, nil 64 } 65 66 ///////////////// 67 // Client/Server 68 ///////////////// 69 70 // initializeRemoteImageScanner is for container image scanning in client/server mode 71 // e.g. dockerd, container registry, podman, etc. 72 func initializeRemoteImageScanner(ctx context.Context, imageName string, artifactCache cache.ArtifactCache, 73 remoteScanOptions client.ScannerOption, imageOpt types.ImageOptions, artifactOption artifact.Option) ( 74 scanner.Scanner, func(), error) { 75 wire.Build(scanner.RemoteDockerSet) 76 return scanner.Scanner{}, nil, nil 77 } 78 79 // initializeRemoteArchiveScanner is for container image archive scanning in client/server mode 80 // e.g. docker save -o alpine.tar alpine:3.15 81 func initializeRemoteArchiveScanner(ctx context.Context, filePath string, artifactCache cache.ArtifactCache, 82 remoteScanOptions client.ScannerOption, artifactOption artifact.Option) (scanner.Scanner, error) { 83 wire.Build(scanner.RemoteArchiveSet) 84 return scanner.Scanner{}, nil 85 } 86 87 // initializeRemoteFilesystemScanner is for filesystem scanning in client/server mode 88 func initializeRemoteFilesystemScanner(ctx context.Context, path string, artifactCache cache.ArtifactCache, 89 remoteScanOptions client.ScannerOption, artifactOption artifact.Option) (scanner.Scanner, func(), error) { 90 wire.Build(scanner.RemoteFilesystemSet) 91 return scanner.Scanner{}, nil, nil 92 } 93 94 // initializeRemoteRepositoryScanner is for repository scanning in client/server mode 95 func initializeRemoteRepositoryScanner(ctx context.Context, url string, artifactCache cache.ArtifactCache, 96 remoteScanOptions client.ScannerOption, artifactOption artifact.Option) ( 97 scanner.Scanner, func(), error) { 98 wire.Build(scanner.RemoteRepositorySet) 99 return scanner.Scanner{}, nil, nil 100 } 101 102 // initializeRemoteSBOMScanner is for sbom scanning in client/server mode 103 func initializeRemoteSBOMScanner(ctx context.Context, path string, artifactCache cache.ArtifactCache, 104 remoteScanOptions client.ScannerOption, artifactOption artifact.Option) (scanner.Scanner, func(), error) { 105 wire.Build(scanner.RemoteSBOMSet) 106 return scanner.Scanner{}, nil, nil 107 } 108 109 // initializeRemoteVMScanner is for vm scanning in client/server mode 110 func initializeRemoteVMScanner(ctx context.Context, path string, artifactCache cache.ArtifactCache, 111 walker vm.Walker, remoteScanOptions client.ScannerOption, artifactOption artifact.Option) (scanner.Scanner, func(), error) { 112 wire.Build(scanner.RemoteVMSet) 113 return scanner.Scanner{}, nil, nil 114 }