in frontend/request.go [94:136]
func toDockerfile(ctx context.Context, bctx llb.State, dt []byte, spec *dalec.SourceBuild, opts ...llb.ConstraintsOpt) solveRequestOpt {
return func(req *gwclient.SolveRequest) error {
req.Frontend = "dockerfile.v0"
bctxDef, err := bctx.Marshal(ctx)
if err != nil {
return errors.Wrap(err, "error marshaling dockerfile to LLB")
}
if req.FrontendInputs == nil {
req.FrontendInputs = make(map[string]*pb.Definition)
}
dfDef, err := marshalDockerfile(ctx, dt, opts...)
if err != nil {
return errors.Wrap(err, "error marshaling dockerfile to LLB")
}
req.FrontendInputs[dockerui.DefaultLocalNameContext] = bctxDef.ToPB()
req.FrontendInputs[dockerui.DefaultLocalNameDockerfile] = dfDef.ToPB()
if ref, cmdline, _, ok := parser.DetectSyntax(dt); ok {
req.Frontend = gatewayFrontend
if req.FrontendOpt == nil {
req.FrontendOpt = make(map[string]string)
}
req.FrontendOpt["source"] = ref
req.FrontendOpt["cmdline"] = cmdline
}
if spec != nil {
if req.FrontendOpt == nil {
req.FrontendOpt = make(map[string]string)
}
if spec.Target != "" {
req.FrontendOpt["target"] = spec.Target
}
for k, v := range spec.Args {
req.FrontendOpt["build-arg:"+k] = v
}
}
return nil
}
}