github.com/devseccon/trivy@v0.47.1-0.20231123133102-bd902a0bd996/pkg/fanal/image/daemon.go (about)

     1  package image
     2  
     3  import (
     4  	"context"
     5  
     6  	"github.com/google/go-containerregistry/pkg/name"
     7  
     8  	"github.com/devseccon/trivy/pkg/fanal/image/daemon"
     9  	"github.com/devseccon/trivy/pkg/fanal/types"
    10  )
    11  
    12  func tryDockerDaemon(_ context.Context, imageName string, ref name.Reference, opt types.ImageOptions) (types.Image, func(), error) {
    13  	img, cleanup, err := daemon.DockerImage(ref, opt.DockerOptions.Host)
    14  	if err != nil {
    15  		return nil, nil, err
    16  	}
    17  	return daemonImage{
    18  		Image: img,
    19  		name:  imageName,
    20  	}, cleanup, nil
    21  
    22  }
    23  
    24  func tryPodmanDaemon(_ context.Context, imageName string, _ name.Reference, _ types.ImageOptions) (types.Image, func(), error) {
    25  	img, cleanup, err := daemon.PodmanImage(imageName)
    26  	if err != nil {
    27  		return nil, nil, err
    28  	}
    29  	return daemonImage{
    30  		Image: img,
    31  		name:  imageName,
    32  	}, cleanup, nil
    33  }
    34  
    35  func tryContainerdDaemon(ctx context.Context, imageName string, _ name.Reference, opts types.ImageOptions) (types.Image, func(), error) {
    36  	img, cleanup, err := daemon.ContainerdImage(ctx, imageName, opts)
    37  	if err != nil {
    38  		return nil, cleanup, err
    39  	}
    40  
    41  	return daemonImage{
    42  		Image: img,
    43  		name:  imageName,
    44  	}, cleanup, nil
    45  }
    46  
    47  type daemonImage struct {
    48  	daemon.Image
    49  	name string
    50  }
    51  
    52  func (d daemonImage) Name() string {
    53  	return d.name
    54  }
    55  
    56  func (d daemonImage) ID() (string, error) {
    57  	return ID(d)
    58  }