package errdefs import ( "github.com/moby/buildkit/solver" ) // ExecError will be returned when an error is encountered when evaluating an op. type ExecError struct { error Inputs []solver.Result Mounts []solver.Result } func (e *ExecError) Unwrap() error { return e.error } func (e *ExecError) EachRef(fn func(solver.Result) error) (err error) { for _, res := range e.Inputs { if res == nil { continue } if err1 := fn(res); err1 != nil && err == nil { err = err1 } } for _, res := range e.Mounts { if res == nil { continue } if err1 := fn(res); err1 != nil && err == nil { err = err1 } } return err } func WithExecError(err error, inputs, mounts []solver.Result) error { if err == nil { return nil } return &ExecError{ error: err, Inputs: inputs, Mounts: mounts, } }