mirror of
https://gitea.com/Lydanne/buildx.git
synced 2025-07-09 21:17:09 +08:00
vendor: github.com/moby/buildkit db304eb93126 (v0.13.0-dev)
full diff: d6e142600e...db304eb931
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
This commit is contained in:
59
vendor/github.com/moby/buildkit/client/llb/sourceresolver/imageresolver.go
generated
vendored
Normal file
59
vendor/github.com/moby/buildkit/client/llb/sourceresolver/imageresolver.go
generated
vendored
Normal file
@ -0,0 +1,59 @@
|
||||
package sourceresolver
|
||||
|
||||
import (
|
||||
"context"
|
||||
"strings"
|
||||
|
||||
"github.com/distribution/reference"
|
||||
"github.com/moby/buildkit/solver/pb"
|
||||
"github.com/moby/buildkit/util/imageutil"
|
||||
digest "github.com/opencontainers/go-digest"
|
||||
"github.com/pkg/errors"
|
||||
)
|
||||
|
||||
type ImageMetaResolver interface {
|
||||
ResolveImageConfig(ctx context.Context, ref string, opt Opt) (string, digest.Digest, []byte, error)
|
||||
}
|
||||
|
||||
type imageMetaResolver struct {
|
||||
mr MetaResolver
|
||||
}
|
||||
|
||||
var _ ImageMetaResolver = &imageMetaResolver{}
|
||||
|
||||
func NewImageMetaResolver(mr MetaResolver) ImageMetaResolver {
|
||||
return &imageMetaResolver{
|
||||
mr: mr,
|
||||
}
|
||||
}
|
||||
|
||||
func (imr *imageMetaResolver) ResolveImageConfig(ctx context.Context, ref string, opt Opt) (string, digest.Digest, []byte, error) {
|
||||
parsed, err := reference.ParseNormalizedNamed(ref)
|
||||
if err != nil {
|
||||
return "", "", nil, errors.Wrapf(err, "could not parse reference %q", ref)
|
||||
}
|
||||
ref = parsed.String()
|
||||
op := &pb.SourceOp{
|
||||
Identifier: "docker-image://" + ref,
|
||||
}
|
||||
if opt := opt.OCILayoutOpt; opt != nil {
|
||||
op.Identifier = "oci-layout://" + ref
|
||||
op.Attrs = map[string]string{}
|
||||
if opt.Store.SessionID != "" {
|
||||
op.Attrs[pb.AttrOCILayoutSessionID] = opt.Store.SessionID
|
||||
}
|
||||
if opt.Store.StoreID != "" {
|
||||
op.Attrs[pb.AttrOCILayoutStoreID] = opt.Store.StoreID
|
||||
}
|
||||
}
|
||||
res, err := imr.mr.ResolveSourceMetadata(ctx, op, opt)
|
||||
if err != nil {
|
||||
return "", "", nil, errors.Wrapf(err, "failed to resolve source metadata for %s", ref)
|
||||
}
|
||||
if res.Image == nil {
|
||||
return "", "", nil, &imageutil.ResolveToNonImageError{Ref: ref, Updated: res.Op.Identifier}
|
||||
}
|
||||
ref = strings.TrimPrefix(res.Op.Identifier, "docker-image://")
|
||||
ref = strings.TrimPrefix(ref, "oci-layout://")
|
||||
return ref, res.Image.Digest, res.Image.Config, nil
|
||||
}
|
Reference in New Issue
Block a user