Files
steampipe/pkg/ociinstaller/asset_downloader.go

39 lines
1.1 KiB
Go

package ociinstaller
import (
ocispec "github.com/opencontainers/image-spec/specs-go/v1"
"github.com/turbot/pipe-fittings/v2/ociinstaller"
"github.com/turbot/steampipe/v2/pkg/constants"
)
type assetsDownloader struct {
ociinstaller.OciDownloader[*assetsImage, *assetsImageConfig]
}
func (p *assetsDownloader) EmptyConfig() *assetsImageConfig {
return &assetsImageConfig{}
}
func newAssetDownloader() *assetsDownloader {
res := &assetsDownloader{}
// create the base downloader, passing res as the image provider
ociDownloader := ociinstaller.NewOciDownloader[*assetsImage, *assetsImageConfig](constants.BaseImageRef, SteampipeMediaTypeProvider{}, res)
res.OciDownloader = *ociDownloader
return res
}
func (p *assetsDownloader) GetImageData(layers []ocispec.Descriptor) (*assetsImage, error) {
var assetImage assetsImage
// get the report dir
foundLayers := ociinstaller.FindLayersForMediaType(layers, MediaTypeAssetReportLayer)
if len(foundLayers) > 0 {
assetImage.ReportUI = foundLayers[0].Annotations["org.opencontainers.image.title"]
}
return &assetImage, nil
}