github.com/Prakhar-Agarwal-byte/moby@v0.0.0-20231027092010-a14e3e8ab87e/builder/builder-next/exporter/overrides/wrapper.go (about) 1 package overrides 2 3 import ( 4 "context" 5 "strings" 6 7 "github.com/moby/buildkit/exporter" 8 "github.com/moby/buildkit/exporter/containerimage/exptypes" 9 ) 10 11 // Wraps the containerimage exporter's Resolve method to apply moby-specific 12 // overrides to the exporter attributes. 13 type imageExporterMobyWrapper struct { 14 exp exporter.Exporter 15 } 16 17 func NewExporterWrapper(exp exporter.Exporter) (exporter.Exporter, error) { 18 return &imageExporterMobyWrapper{exp: exp}, nil 19 } 20 21 // Resolve applies moby specific attributes to the request. 22 func (e *imageExporterMobyWrapper) Resolve(ctx context.Context, exporterAttrs map[string]string) (exporter.ExporterInstance, error) { 23 if exporterAttrs == nil { 24 exporterAttrs = make(map[string]string) 25 } 26 reposAndTags, err := SanitizeRepoAndTags(strings.Split(exporterAttrs[string(exptypes.OptKeyName)], ",")) 27 if err != nil { 28 return nil, err 29 } 30 exporterAttrs[string(exptypes.OptKeyName)] = strings.Join(reposAndTags, ",") 31 exporterAttrs[string(exptypes.OptKeyUnpack)] = "true" 32 if _, has := exporterAttrs[string(exptypes.OptKeyDanglingPrefix)]; !has { 33 exporterAttrs[string(exptypes.OptKeyDanglingPrefix)] = "moby-dangling" 34 } 35 36 return e.exp.Resolve(ctx, exporterAttrs) 37 }