github.com/Prakhar-Agarwal-byte/moby@v0.0.0-20231027092010-a14e3e8ab87e/builder/builder-next/worker/containerdworker.go (about) 1 package worker 2 3 import ( 4 "context" 5 6 mobyexporter "github.com/Prakhar-Agarwal-byte/moby/builder/builder-next/exporter" 7 "github.com/Prakhar-Agarwal-byte/moby/builder/builder-next/exporter/overrides" 8 "github.com/moby/buildkit/client" 9 "github.com/moby/buildkit/exporter" 10 "github.com/moby/buildkit/session" 11 "github.com/moby/buildkit/worker/base" 12 ) 13 14 // ContainerdWorker is a local worker instance with dedicated snapshotter, cache, and so on. 15 type ContainerdWorker struct { 16 *base.Worker 17 } 18 19 // NewContainerdWorker instantiates a local worker. 20 func NewContainerdWorker(ctx context.Context, wo base.WorkerOpt) (*ContainerdWorker, error) { 21 bw, err := base.NewWorker(ctx, wo) 22 if err != nil { 23 return nil, err 24 } 25 return &ContainerdWorker{Worker: bw}, nil 26 } 27 28 // Exporter returns exporter by name 29 func (w *ContainerdWorker) Exporter(name string, sm *session.Manager) (exporter.Exporter, error) { 30 switch name { 31 case mobyexporter.Moby: 32 exp, err := w.Worker.Exporter(client.ExporterImage, sm) 33 if err != nil { 34 return nil, err 35 } 36 return overrides.NewExporterWrapper(exp) 37 default: 38 return w.Worker.Exporter(name, sm) 39 } 40 }