35 lines
781 B
Go
35 lines
781 B
Go
package builder
|
|
|
|
import (
|
|
"strings"
|
|
|
|
"github.com/moby/buildkit/solver/errdefs"
|
|
"github.com/moby/buildkit/util/grpcerrors"
|
|
"github.com/moby/buildkit/util/stack"
|
|
"google.golang.org/grpc/codes"
|
|
)
|
|
|
|
var enabledCaps = map[string]struct{}{
|
|
"moby.buildkit.frontend.inputs": {},
|
|
"moby.buildkit.frontend.subrequests": {},
|
|
}
|
|
|
|
func validateCaps(req string) (forward bool, err error) {
|
|
if req == "" {
|
|
return
|
|
}
|
|
caps := strings.Split(req, ",")
|
|
for _, c := range caps {
|
|
parts := strings.SplitN(c, "+", 2)
|
|
if _, ok := enabledCaps[parts[0]]; !ok {
|
|
err = stack.Enable(grpcerrors.WrapCode(errdefs.NewUnsupportedFrontendCapError(parts[0]), codes.Unimplemented))
|
|
if strings.Contains(c, "+forward") {
|
|
forward = true
|
|
} else {
|
|
return false, err
|
|
}
|
|
}
|
|
}
|
|
return
|
|
}
|