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  }