controller: print result outside of controller

This will allow result printing to work with the remote controller
(though this currently causes a panic, to be fixed in a follow-up).

Signed-off-by: Justin Chadwell <me@jedevc.com>
This commit is contained in:
Justin Chadwell 2023-04-24 10:41:10 +01:00
parent 2bf996d9ad
commit ba92989a94
6 changed files with 298 additions and 251 deletions

View File

@ -8,6 +8,7 @@ import (
"encoding/json"
"fmt"
"io"
"log"
"os"
"path/filepath"
"runtime"
@ -33,10 +34,14 @@ import (
"github.com/docker/cli/cli"
"github.com/docker/cli/cli/command"
dockeropts "github.com/docker/cli/opts"
"github.com/docker/docker/api/types/versions"
"github.com/docker/docker/builder/remotecontext/urlutil"
"github.com/docker/docker/pkg/ioutils"
"github.com/moby/buildkit/client"
"github.com/moby/buildkit/exporter/containerimage/exptypes"
"github.com/moby/buildkit/frontend/subrequests"
"github.com/moby/buildkit/frontend/subrequests/outline"
"github.com/moby/buildkit/frontend/subrequests/targets"
"github.com/moby/buildkit/solver/errdefs"
"github.com/moby/buildkit/util/appcontext"
"github.com/moby/buildkit/util/grpcerrors"
@ -105,7 +110,6 @@ func (o *buildOptions) toControllerOptions() (*controllerapi.BuildOptions, error
NetworkMode: o.networkMode,
NoCacheFilter: o.noCacheFilter,
Platforms: o.platforms,
PrintFunc: o.printFunc,
ShmSize: int64(o.shmSize),
Tags: o.tags,
Target: o.target,
@ -169,6 +173,11 @@ func (o *buildOptions) toControllerOptions() (*controllerapi.BuildOptions, error
return nil, err
}
opts.PrintFunc, err = buildflags.ParsePrintFunc(o.printFunc)
if err != nil {
return nil, err
}
return &opts, nil
}
@ -198,6 +207,11 @@ func runBuild(dockerCli command.Cli, options buildOptions) (err error) {
end(err)
}()
opts, err := options.toControllerOptions()
if err != nil {
return err
}
// Avoid leaving a stale file if we eventually fail
if options.imageIDFile != "" {
if err := os.Remove(options.imageIDFile); err != nil && !os.IsNotExist(err) {
@ -240,9 +254,9 @@ func runBuild(dockerCli command.Cli, options buildOptions) (err error) {
var resp *client.SolveResponse
var retErr error
if isExperimental() {
resp, retErr = runControllerBuild(ctx, dockerCli, options, printer)
resp, retErr = runControllerBuild(ctx, dockerCli, opts, options, printer)
} else {
resp, retErr = runBasicBuild(ctx, dockerCli, options, printer)
resp, retErr = runBasicBuild(ctx, dockerCli, opts, options, printer)
}
if err := printer.Wait(); retErr == nil {
@ -267,20 +281,20 @@ func runBuild(dockerCli command.Cli, options buildOptions) (err error) {
return err
}
}
if opts.PrintFunc != nil {
if err := printResult(opts.PrintFunc, resp.ExporterResponse); err != nil {
return err
}
}
return nil
}
func runBasicBuild(ctx context.Context, dockerCli command.Cli, options buildOptions, printer *progress.Printer) (*client.SolveResponse, error) {
opts, err := options.toControllerOptions()
if err != nil {
return nil, err
}
func runBasicBuild(ctx context.Context, dockerCli command.Cli, opts *controllerapi.BuildOptions, options buildOptions, printer *progress.Printer) (*client.SolveResponse, error) {
resp, _, err := cbuild.RunBuild(ctx, dockerCli, *opts, os.Stdin, printer, false)
return resp, err
}
func runControllerBuild(ctx context.Context, dockerCli command.Cli, options buildOptions, printer *progress.Printer) (*client.SolveResponse, error) {
func runControllerBuild(ctx context.Context, dockerCli command.Cli, opts *controllerapi.BuildOptions, options buildOptions, printer *progress.Printer) (*client.SolveResponse, error) {
if options.invoke != nil && (options.dockerfileName == "-" || options.contextPath == "-") {
// stdin must be usable for monitor
return nil, errors.Errorf("Dockerfile or context from stdin is not supported with invoke")
@ -296,12 +310,6 @@ func runControllerBuild(ctx context.Context, dockerCli command.Cli, options buil
}
}()
// Start build
opts, err := options.toControllerOptions()
if err != nil {
return nil, err
}
// NOTE: buildx server has the current working directory different from the client
// so we need to resolve paths to abosolute ones in the client.
opts, err = resolvePaths(opts)
@ -940,3 +948,37 @@ func printWarnings(w io.Writer, warnings []client.VertexWarning, mode string) {
}
}
func printResult(f *controllerapi.PrintFunc, res map[string]string) error {
switch f.Name {
case "outline":
return printValue(outline.PrintOutline, outline.SubrequestsOutlineDefinition.Version, f.Format, res)
case "targets":
return printValue(targets.PrintTargets, targets.SubrequestsTargetsDefinition.Version, f.Format, res)
case "subrequests.describe":
return printValue(subrequests.PrintDescribe, subrequests.SubrequestsDescribeDefinition.Version, f.Format, res)
default:
if dt, ok := res["result.txt"]; ok {
fmt.Print(dt)
} else {
log.Printf("%s %+v", f, res)
}
}
return nil
}
type printFunc func([]byte, io.Writer) error
func printValue(printer printFunc, version string, format string, res map[string]string) error {
if format == "json" {
fmt.Fprintln(os.Stdout, res["result.json"])
return nil
}
if res["version"] != "" && versions.LessThan(version, res["version"]) && res["result.txt"] != "" {
// structure is too new and we don't know how to print it
fmt.Fprint(os.Stdout, res["result.txt"])
return nil
}
return printer([]byte(res["result.json"]), os.Stdout)
}

View File

@ -2,7 +2,6 @@ package build
import (
"context"
"encoding/csv"
"io"
"os"
"path/filepath"
@ -47,11 +46,6 @@ func RunBuild(ctx context.Context, dockerCli command.Cli, in controllerapi.Build
contexts[name] = build.NamedContext{Path: path}
}
printFunc, err := parsePrintFunc(in.PrintFunc)
if err != nil {
return nil, nil, err
}
opts := build.Options{
Inputs: build.Inputs{
ContextPath: in.ContextPath,
@ -70,7 +64,6 @@ func RunBuild(ctx context.Context, dockerCli command.Cli, in controllerapi.Build
Tags: in.Tags,
Target: in.Target,
Ulimits: controllerUlimitOpt2DockerUlimit(in.Ulimits),
PrintFunc: printFunc,
}
platforms, err := platformutil.Parse(in.Platforms)
@ -149,6 +142,13 @@ func RunBuild(ctx context.Context, dockerCli command.Cli, in controllerapi.Build
}
opts.Allow = allow
if in.PrintFunc != nil {
opts.PrintFunc = &build.PrintFunc{
Name: in.PrintFunc.Name,
Format: in.PrintFunc.Format,
}
}
// key string used for kubernetes "sticky" mode
contextPathHash, err := filepath.Abs(in.ContextPath)
if err != nil {
@ -205,46 +205,9 @@ func buildTargets(ctx context.Context, dockerCli command.Cli, ng *store.NodeGrou
if err != nil {
return nil, res, err
}
for k := range resp {
if opts[k].PrintFunc != nil {
if err := printResult(opts[k].PrintFunc, resp[k].ExporterResponse); err != nil {
return nil, nil, err
}
}
}
return resp[defaultTargetName], res, err
}
func parsePrintFunc(str string) (*build.PrintFunc, error) {
if str == "" {
return nil, nil
}
csvReader := csv.NewReader(strings.NewReader(str))
fields, err := csvReader.Read()
if err != nil {
return nil, err
}
f := &build.PrintFunc{}
for _, field := range fields {
parts := strings.SplitN(field, "=", 2)
if len(parts) == 2 {
if parts[0] == "format" {
f.Format = parts[1]
} else {
return nil, errors.Errorf("invalid print field: %s", field)
}
} else {
if f.Name != "" {
return nil, errors.Errorf("invalid print value: %s", str)
}
f.Name = field
}
}
return f, nil
}
func wrapBuildError(err error, bake bool) error {
if err == nil {
return nil

View File

@ -1,48 +0,0 @@
package build
import (
"fmt"
"io"
"log"
"os"
"github.com/docker/buildx/build"
"github.com/docker/docker/api/types/versions"
"github.com/moby/buildkit/frontend/subrequests"
"github.com/moby/buildkit/frontend/subrequests/outline"
"github.com/moby/buildkit/frontend/subrequests/targets"
)
func printResult(f *build.PrintFunc, res map[string]string) error {
switch f.Name {
case "outline":
return printValue(outline.PrintOutline, outline.SubrequestsOutlineDefinition.Version, f.Format, res)
case "targets":
return printValue(targets.PrintTargets, targets.SubrequestsTargetsDefinition.Version, f.Format, res)
case "subrequests.describe":
return printValue(subrequests.PrintDescribe, subrequests.SubrequestsDescribeDefinition.Version, f.Format, res)
default:
if dt, ok := res["result.txt"]; ok {
fmt.Print(dt)
} else {
log.Printf("%s %+v", f, res)
}
}
return nil
}
type printFunc func([]byte, io.Writer) error
func printValue(printer printFunc, version string, format string, res map[string]string) error {
if format == "json" {
fmt.Fprintln(os.Stdout, res["result.json"])
return nil
}
if res["version"] != "" && versions.LessThan(version, res["version"]) && res["result.txt"] != "" {
// structure is too new and we don't know how to print it
fmt.Fprint(os.Stdout, res["result.txt"])
return nil
}
return printer([]byte(res["result.json"]), os.Stdout)
}

View File

@ -272,7 +272,7 @@ func (m *BuildRequest) GetOptions() *BuildOptions {
type BuildOptions struct {
ContextPath string `protobuf:"bytes,1,opt,name=ContextPath,proto3" json:"ContextPath,omitempty"`
DockerfileName string `protobuf:"bytes,2,opt,name=DockerfileName,proto3" json:"DockerfileName,omitempty"`
PrintFunc string `protobuf:"bytes,3,opt,name=PrintFunc,proto3" json:"PrintFunc,omitempty"`
PrintFunc *PrintFunc `protobuf:"bytes,3,opt,name=PrintFunc,proto3" json:"PrintFunc,omitempty"`
NamedContexts map[string]string `protobuf:"bytes,4,rep,name=NamedContexts,proto3" json:"NamedContexts,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
Allow []string `protobuf:"bytes,5,rep,name=Allow,proto3" json:"Allow,omitempty"`
Attests []*Attest `protobuf:"bytes,6,rep,name=Attests,proto3" json:"Attests,omitempty"`
@ -340,11 +340,11 @@ func (m *BuildOptions) GetDockerfileName() string {
return ""
}
func (m *BuildOptions) GetPrintFunc() string {
func (m *BuildOptions) GetPrintFunc() *PrintFunc {
if m != nil {
return m.PrintFunc
}
return ""
return nil
}
func (m *BuildOptions) GetNamedContexts() map[string]string {
@ -769,6 +769,52 @@ func (m *Secret) GetEnv() string {
return ""
}
type PrintFunc struct {
Name string `protobuf:"bytes,1,opt,name=Name,proto3" json:"Name,omitempty"`
Format string `protobuf:"bytes,2,opt,name=Format,proto3" json:"Format,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *PrintFunc) Reset() { *m = PrintFunc{} }
func (m *PrintFunc) String() string { return proto.CompactTextString(m) }
func (*PrintFunc) ProtoMessage() {}
func (*PrintFunc) Descriptor() ([]byte, []int) {
return fileDescriptor_ed7f10298fa1d90f, []int{12}
}
func (m *PrintFunc) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_PrintFunc.Unmarshal(m, b)
}
func (m *PrintFunc) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_PrintFunc.Marshal(b, m, deterministic)
}
func (m *PrintFunc) XXX_Merge(src proto.Message) {
xxx_messageInfo_PrintFunc.Merge(m, src)
}
func (m *PrintFunc) XXX_Size() int {
return xxx_messageInfo_PrintFunc.Size(m)
}
func (m *PrintFunc) XXX_DiscardUnknown() {
xxx_messageInfo_PrintFunc.DiscardUnknown(m)
}
var xxx_messageInfo_PrintFunc proto.InternalMessageInfo
func (m *PrintFunc) GetName() string {
if m != nil {
return m.Name
}
return ""
}
func (m *PrintFunc) GetFormat() string {
if m != nil {
return m.Format
}
return ""
}
type InspectRequest struct {
Ref string `protobuf:"bytes,1,opt,name=Ref,proto3" json:"Ref,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
@ -780,7 +826,7 @@ func (m *InspectRequest) Reset() { *m = InspectRequest{} }
func (m *InspectRequest) String() string { return proto.CompactTextString(m) }
func (*InspectRequest) ProtoMessage() {}
func (*InspectRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_ed7f10298fa1d90f, []int{12}
return fileDescriptor_ed7f10298fa1d90f, []int{13}
}
func (m *InspectRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_InspectRequest.Unmarshal(m, b)
@ -818,7 +864,7 @@ func (m *InspectResponse) Reset() { *m = InspectResponse{} }
func (m *InspectResponse) String() string { return proto.CompactTextString(m) }
func (*InspectResponse) ProtoMessage() {}
func (*InspectResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_ed7f10298fa1d90f, []int{13}
return fileDescriptor_ed7f10298fa1d90f, []int{14}
}
func (m *InspectResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_InspectResponse.Unmarshal(m, b)
@ -856,7 +902,7 @@ func (m *UlimitOpt) Reset() { *m = UlimitOpt{} }
func (m *UlimitOpt) String() string { return proto.CompactTextString(m) }
func (*UlimitOpt) ProtoMessage() {}
func (*UlimitOpt) Descriptor() ([]byte, []int) {
return fileDescriptor_ed7f10298fa1d90f, []int{14}
return fileDescriptor_ed7f10298fa1d90f, []int{15}
}
func (m *UlimitOpt) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_UlimitOpt.Unmarshal(m, b)
@ -896,7 +942,7 @@ func (m *Ulimit) Reset() { *m = Ulimit{} }
func (m *Ulimit) String() string { return proto.CompactTextString(m) }
func (*Ulimit) ProtoMessage() {}
func (*Ulimit) Descriptor() ([]byte, []int) {
return fileDescriptor_ed7f10298fa1d90f, []int{15}
return fileDescriptor_ed7f10298fa1d90f, []int{16}
}
func (m *Ulimit) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Ulimit.Unmarshal(m, b)
@ -948,7 +994,7 @@ func (m *BuildResponse) Reset() { *m = BuildResponse{} }
func (m *BuildResponse) String() string { return proto.CompactTextString(m) }
func (*BuildResponse) ProtoMessage() {}
func (*BuildResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_ed7f10298fa1d90f, []int{16}
return fileDescriptor_ed7f10298fa1d90f, []int{17}
}
func (m *BuildResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_BuildResponse.Unmarshal(m, b)
@ -986,7 +1032,7 @@ func (m *DisconnectRequest) Reset() { *m = DisconnectRequest{} }
func (m *DisconnectRequest) String() string { return proto.CompactTextString(m) }
func (*DisconnectRequest) ProtoMessage() {}
func (*DisconnectRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_ed7f10298fa1d90f, []int{17}
return fileDescriptor_ed7f10298fa1d90f, []int{18}
}
func (m *DisconnectRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DisconnectRequest.Unmarshal(m, b)
@ -1023,7 +1069,7 @@ func (m *DisconnectResponse) Reset() { *m = DisconnectResponse{} }
func (m *DisconnectResponse) String() string { return proto.CompactTextString(m) }
func (*DisconnectResponse) ProtoMessage() {}
func (*DisconnectResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_ed7f10298fa1d90f, []int{18}
return fileDescriptor_ed7f10298fa1d90f, []int{19}
}
func (m *DisconnectResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DisconnectResponse.Unmarshal(m, b)
@ -1054,7 +1100,7 @@ func (m *ListRequest) Reset() { *m = ListRequest{} }
func (m *ListRequest) String() string { return proto.CompactTextString(m) }
func (*ListRequest) ProtoMessage() {}
func (*ListRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_ed7f10298fa1d90f, []int{19}
return fileDescriptor_ed7f10298fa1d90f, []int{20}
}
func (m *ListRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ListRequest.Unmarshal(m, b)
@ -1092,7 +1138,7 @@ func (m *ListResponse) Reset() { *m = ListResponse{} }
func (m *ListResponse) String() string { return proto.CompactTextString(m) }
func (*ListResponse) ProtoMessage() {}
func (*ListResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_ed7f10298fa1d90f, []int{20}
return fileDescriptor_ed7f10298fa1d90f, []int{21}
}
func (m *ListResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ListResponse.Unmarshal(m, b)
@ -1133,7 +1179,7 @@ func (m *InputMessage) Reset() { *m = InputMessage{} }
func (m *InputMessage) String() string { return proto.CompactTextString(m) }
func (*InputMessage) ProtoMessage() {}
func (*InputMessage) Descriptor() ([]byte, []int) {
return fileDescriptor_ed7f10298fa1d90f, []int{21}
return fileDescriptor_ed7f10298fa1d90f, []int{22}
}
func (m *InputMessage) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_InputMessage.Unmarshal(m, b)
@ -1207,7 +1253,7 @@ func (m *InputInitMessage) Reset() { *m = InputInitMessage{} }
func (m *InputInitMessage) String() string { return proto.CompactTextString(m) }
func (*InputInitMessage) ProtoMessage() {}
func (*InputInitMessage) Descriptor() ([]byte, []int) {
return fileDescriptor_ed7f10298fa1d90f, []int{22}
return fileDescriptor_ed7f10298fa1d90f, []int{23}
}
func (m *InputInitMessage) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_InputInitMessage.Unmarshal(m, b)
@ -1246,7 +1292,7 @@ func (m *DataMessage) Reset() { *m = DataMessage{} }
func (m *DataMessage) String() string { return proto.CompactTextString(m) }
func (*DataMessage) ProtoMessage() {}
func (*DataMessage) Descriptor() ([]byte, []int) {
return fileDescriptor_ed7f10298fa1d90f, []int{23}
return fileDescriptor_ed7f10298fa1d90f, []int{24}
}
func (m *DataMessage) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DataMessage.Unmarshal(m, b)
@ -1290,7 +1336,7 @@ func (m *InputResponse) Reset() { *m = InputResponse{} }
func (m *InputResponse) String() string { return proto.CompactTextString(m) }
func (*InputResponse) ProtoMessage() {}
func (*InputResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_ed7f10298fa1d90f, []int{24}
return fileDescriptor_ed7f10298fa1d90f, []int{25}
}
func (m *InputResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_InputResponse.Unmarshal(m, b)
@ -1326,7 +1372,7 @@ func (m *Message) Reset() { *m = Message{} }
func (m *Message) String() string { return proto.CompactTextString(m) }
func (*Message) ProtoMessage() {}
func (*Message) Descriptor() ([]byte, []int) {
return fileDescriptor_ed7f10298fa1d90f, []int{25}
return fileDescriptor_ed7f10298fa1d90f, []int{26}
}
func (m *Message) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Message.Unmarshal(m, b)
@ -1428,7 +1474,7 @@ func (m *InitMessage) Reset() { *m = InitMessage{} }
func (m *InitMessage) String() string { return proto.CompactTextString(m) }
func (*InitMessage) ProtoMessage() {}
func (*InitMessage) Descriptor() ([]byte, []int) {
return fileDescriptor_ed7f10298fa1d90f, []int{26}
return fileDescriptor_ed7f10298fa1d90f, []int{27}
}
func (m *InitMessage) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_InitMessage.Unmarshal(m, b)
@ -1489,7 +1535,7 @@ func (m *InvokeConfig) Reset() { *m = InvokeConfig{} }
func (m *InvokeConfig) String() string { return proto.CompactTextString(m) }
func (*InvokeConfig) ProtoMessage() {}
func (*InvokeConfig) Descriptor() ([]byte, []int) {
return fileDescriptor_ed7f10298fa1d90f, []int{27}
return fileDescriptor_ed7f10298fa1d90f, []int{28}
}
func (m *InvokeConfig) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_InvokeConfig.Unmarshal(m, b)
@ -1592,7 +1638,7 @@ func (m *FdMessage) Reset() { *m = FdMessage{} }
func (m *FdMessage) String() string { return proto.CompactTextString(m) }
func (*FdMessage) ProtoMessage() {}
func (*FdMessage) Descriptor() ([]byte, []int) {
return fileDescriptor_ed7f10298fa1d90f, []int{28}
return fileDescriptor_ed7f10298fa1d90f, []int{29}
}
func (m *FdMessage) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_FdMessage.Unmarshal(m, b)
@ -1645,7 +1691,7 @@ func (m *ResizeMessage) Reset() { *m = ResizeMessage{} }
func (m *ResizeMessage) String() string { return proto.CompactTextString(m) }
func (*ResizeMessage) ProtoMessage() {}
func (*ResizeMessage) Descriptor() ([]byte, []int) {
return fileDescriptor_ed7f10298fa1d90f, []int{29}
return fileDescriptor_ed7f10298fa1d90f, []int{30}
}
func (m *ResizeMessage) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ResizeMessage.Unmarshal(m, b)
@ -1692,7 +1738,7 @@ func (m *SignalMessage) Reset() { *m = SignalMessage{} }
func (m *SignalMessage) String() string { return proto.CompactTextString(m) }
func (*SignalMessage) ProtoMessage() {}
func (*SignalMessage) Descriptor() ([]byte, []int) {
return fileDescriptor_ed7f10298fa1d90f, []int{30}
return fileDescriptor_ed7f10298fa1d90f, []int{31}
}
func (m *SignalMessage) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SignalMessage.Unmarshal(m, b)
@ -1730,7 +1776,7 @@ func (m *StatusRequest) Reset() { *m = StatusRequest{} }
func (m *StatusRequest) String() string { return proto.CompactTextString(m) }
func (*StatusRequest) ProtoMessage() {}
func (*StatusRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_ed7f10298fa1d90f, []int{31}
return fileDescriptor_ed7f10298fa1d90f, []int{32}
}
func (m *StatusRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_StatusRequest.Unmarshal(m, b)
@ -1771,7 +1817,7 @@ func (m *StatusResponse) Reset() { *m = StatusResponse{} }
func (m *StatusResponse) String() string { return proto.CompactTextString(m) }
func (*StatusResponse) ProtoMessage() {}
func (*StatusResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_ed7f10298fa1d90f, []int{32}
return fileDescriptor_ed7f10298fa1d90f, []int{33}
}
func (m *StatusResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_StatusResponse.Unmarshal(m, b)
@ -1829,7 +1875,7 @@ func (m *InfoRequest) Reset() { *m = InfoRequest{} }
func (m *InfoRequest) String() string { return proto.CompactTextString(m) }
func (*InfoRequest) ProtoMessage() {}
func (*InfoRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_ed7f10298fa1d90f, []int{33}
return fileDescriptor_ed7f10298fa1d90f, []int{34}
}
func (m *InfoRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_InfoRequest.Unmarshal(m, b)
@ -1860,7 +1906,7 @@ func (m *InfoResponse) Reset() { *m = InfoResponse{} }
func (m *InfoResponse) String() string { return proto.CompactTextString(m) }
func (*InfoResponse) ProtoMessage() {}
func (*InfoResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_ed7f10298fa1d90f, []int{34}
return fileDescriptor_ed7f10298fa1d90f, []int{35}
}
func (m *InfoResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_InfoResponse.Unmarshal(m, b)
@ -1900,7 +1946,7 @@ func (m *BuildxVersion) Reset() { *m = BuildxVersion{} }
func (m *BuildxVersion) String() string { return proto.CompactTextString(m) }
func (*BuildxVersion) ProtoMessage() {}
func (*BuildxVersion) Descriptor() ([]byte, []int) {
return fileDescriptor_ed7f10298fa1d90f, []int{35}
return fileDescriptor_ed7f10298fa1d90f, []int{36}
}
func (m *BuildxVersion) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_BuildxVersion.Unmarshal(m, b)
@ -1959,6 +2005,7 @@ func init() {
proto.RegisterType((*Attest)(nil), "buildx.controller.v1.Attest")
proto.RegisterType((*SSH)(nil), "buildx.controller.v1.SSH")
proto.RegisterType((*Secret)(nil), "buildx.controller.v1.Secret")
proto.RegisterType((*PrintFunc)(nil), "buildx.controller.v1.PrintFunc")
proto.RegisterType((*InspectRequest)(nil), "buildx.controller.v1.InspectRequest")
proto.RegisterType((*InspectResponse)(nil), "buildx.controller.v1.InspectResponse")
proto.RegisterType((*UlimitOpt)(nil), "buildx.controller.v1.UlimitOpt")
@ -1990,121 +2037,122 @@ func init() {
func init() { proto.RegisterFile("controller.proto", fileDescriptor_ed7f10298fa1d90f) }
var fileDescriptor_ed7f10298fa1d90f = []byte{
// 1818 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x58, 0xef, 0x6e, 0x1b, 0xb9,
0x11, 0xef, 0x4a, 0xb2, 0xfe, 0x8c, 0x2c, 0xc7, 0x61, 0x9d, 0x2b, 0xb3, 0xb9, 0x5e, 0x9c, 0x4d,
0xee, 0x2a, 0x34, 0x85, 0x7c, 0xe7, 0xeb, 0x35, 0x97, 0xcb, 0x15, 0xa8, 0x2d, 0x5b, 0xb0, 0x0f,
0x89, 0x6d, 0xac, 0x1c, 0x1f, 0xda, 0x02, 0x0d, 0x56, 0x12, 0x2d, 0x2f, 0xb4, 0x5a, 0xaa, 0x4b,
0xca, 0xb6, 0xfa, 0xa9, 0x5f, 0xfa, 0xad, 0xe8, 0x7b, 0x14, 0x7d, 0x84, 0x7e, 0xea, 0x3b, 0xf4,
0x39, 0x8a, 0x3e, 0x42, 0xc1, 0x21, 0x77, 0xb5, 0xb2, 0xb4, 0xb2, 0xdd, 0xfb, 0x24, 0xce, 0xf0,
0xf7, 0x1b, 0x72, 0x86, 0xc3, 0xe1, 0x68, 0x61, 0xbd, 0xcb, 0x43, 0x19, 0xf1, 0x20, 0x60, 0x51,
0x63, 0x14, 0x71, 0xc9, 0xc9, 0x46, 0x67, 0xec, 0x07, 0xbd, 0xeb, 0x46, 0x6a, 0xe2, 0xf2, 0x0b,
0xfb, 0x4d, 0xdf, 0x97, 0x17, 0xe3, 0x4e, 0xa3, 0xcb, 0x87, 0x5b, 0x43, 0xde, 0x99, 0x6c, 0x21,
0x6a, 0xe0, 0xcb, 0x2d, 0x6f, 0xe4, 0x6f, 0x09, 0x16, 0x5d, 0xfa, 0x5d, 0x26, 0xb6, 0x0c, 0x29,
0xfe, 0xd5, 0x26, 0x9d, 0x3a, 0x6c, 0xbc, 0xf5, 0x85, 0x3c, 0x89, 0x78, 0x97, 0x09, 0xc1, 0x84,
0xcb, 0xfe, 0x38, 0x66, 0x42, 0x92, 0x75, 0xc8, 0xbb, 0xec, 0x9c, 0x5a, 0x9b, 0x56, 0xbd, 0xe2,
0xaa, 0xa1, 0x73, 0x02, 0x8f, 0x6e, 0x20, 0xc5, 0x88, 0x87, 0x82, 0x91, 0x57, 0xb0, 0x72, 0x18,
0x9e, 0x73, 0x41, 0xad, 0xcd, 0x7c, 0xbd, 0xba, 0xfd, 0xac, 0xb1, 0x68, 0x97, 0x0d, 0xc3, 0x53,
0x48, 0x57, 0xe3, 0x1d, 0x01, 0xd5, 0x94, 0x96, 0x7c, 0x0c, 0x95, 0x58, 0xdc, 0x33, 0x0b, 0x4f,
0x15, 0xa4, 0x05, 0xab, 0x87, 0xe1, 0x25, 0x1f, 0xb0, 0x26, 0x0f, 0xcf, 0xfd, 0x3e, 0xcd, 0x6d,
0x5a, 0xf5, 0xea, 0xb6, 0xb3, 0x78, 0xb1, 0x34, 0xd2, 0x9d, 0xe1, 0x39, 0xdf, 0x01, 0xdd, 0xf3,
0x45, 0x97, 0x87, 0x21, 0xeb, 0xc6, 0xce, 0x64, 0x3a, 0x3d, 0xbb, 0xa7, 0xdc, 0x8d, 0x3d, 0x39,
0x4f, 0xe0, 0xf1, 0x02, 0x5b, 0x3a, 0x2c, 0xce, 0x1f, 0x60, 0x75, 0x57, 0xed, 0x2d, 0xdb, 0xf8,
0xb7, 0x50, 0x3a, 0x1e, 0x49, 0x9f, 0x87, 0x62, 0xb9, 0x37, 0x68, 0xc6, 0x20, 0xdd, 0x98, 0xe2,
0xfc, 0x1b, 0xcc, 0x02, 0x46, 0x41, 0x36, 0xa1, 0xda, 0xe4, 0xa1, 0x64, 0xd7, 0xf2, 0xc4, 0x93,
0x17, 0x66, 0xa1, 0xb4, 0x8a, 0x7c, 0x06, 0x6b, 0x7b, 0xbc, 0x3b, 0x60, 0xd1, 0xb9, 0x1f, 0xb0,
0x23, 0x6f, 0xc8, 0x8c, 0x4b, 0x37, 0xb4, 0xda, 0x6b, 0x3f, 0x94, 0xad, 0x71, 0xd8, 0xa5, 0xf9,
0xd8, 0x6b, 0xa3, 0x20, 0xbf, 0x87, 0x9a, 0x42, 0xf5, 0x8c, 0x65, 0x41, 0x0b, 0x78, 0xee, 0x5f,
0xdd, 0xbe, 0xf9, 0xc6, 0x0c, 0x6f, 0x3f, 0x94, 0xd1, 0xc4, 0x9d, 0xb5, 0x45, 0x36, 0x60, 0x65,
0x27, 0x08, 0xf8, 0x15, 0x5d, 0xd9, 0xcc, 0xd7, 0x2b, 0xae, 0x16, 0xc8, 0xaf, 0xa0, 0xb4, 0x23,
0x25, 0x13, 0x52, 0xd0, 0x22, 0x2e, 0xf6, 0xf1, 0xe2, 0xc5, 0x34, 0xc8, 0x8d, 0xc1, 0xe4, 0x18,
0x2a, 0xb8, 0xfe, 0x4e, 0xd4, 0x17, 0xb4, 0x84, 0xcc, 0x2f, 0xee, 0xb0, 0xcd, 0x84, 0xa3, 0xb7,
0x38, 0xb5, 0x41, 0xf6, 0xa1, 0xd2, 0xf4, 0xba, 0x17, 0xac, 0x15, 0xf1, 0x21, 0x2d, 0xa3, 0xc1,
0x9f, 0x2d, 0x36, 0x88, 0x30, 0x63, 0xd0, 0x98, 0x49, 0x98, 0x64, 0x07, 0x4a, 0x28, 0x9c, 0x72,
0x5a, 0xb9, 0x9f, 0x91, 0x98, 0x47, 0x1c, 0x58, 0x6d, 0xf6, 0x23, 0x3e, 0x1e, 0x9d, 0x78, 0x11,
0x0b, 0x25, 0x05, 0x3c, 0xa6, 0x19, 0x1d, 0x79, 0x03, 0xa5, 0xfd, 0xeb, 0x11, 0x8f, 0xa4, 0xa0,
0xd5, 0x65, 0x77, 0x53, 0x83, 0xcc, 0x02, 0x86, 0x41, 0x3e, 0x01, 0xd8, 0xbf, 0x96, 0x91, 0x77,
0xc0, 0x55, 0xd8, 0x57, 0xf1, 0x38, 0x52, 0x1a, 0xd2, 0x82, 0xe2, 0x5b, 0xaf, 0xc3, 0x02, 0x41,
0x6b, 0x68, 0xbb, 0x71, 0x87, 0xc0, 0x6a, 0x82, 0x5e, 0xc8, 0xb0, 0x55, 0xda, 0x1e, 0x31, 0x79,
0xc5, 0xa3, 0xc1, 0x3b, 0xde, 0x63, 0x74, 0x4d, 0xa7, 0x6d, 0x4a, 0x45, 0x5e, 0x40, 0xed, 0x88,
0xeb, 0xe0, 0xf9, 0x81, 0x64, 0x11, 0x7d, 0x80, 0x9b, 0x99, 0x55, 0x62, 0xd2, 0x06, 0x9e, 0x3c,
0xe7, 0xd1, 0x50, 0xd0, 0x75, 0x44, 0x4c, 0x15, 0x2a, 0x83, 0xda, 0xac, 0x1b, 0x31, 0x29, 0xe8,
0xc3, 0x65, 0x19, 0xa4, 0x41, 0x6e, 0x0c, 0x26, 0x14, 0x4a, 0xed, 0x8b, 0x61, 0xdb, 0xff, 0x13,
0xa3, 0x64, 0xd3, 0xaa, 0xe7, 0xdd, 0x58, 0x24, 0x2f, 0x21, 0xdf, 0x6e, 0x1f, 0xd0, 0x1f, 0xa3,
0xb5, 0xc7, 0x19, 0xd6, 0xda, 0x07, 0xae, 0x42, 0x11, 0x02, 0x85, 0x53, 0xaf, 0x2f, 0xe8, 0x06,
0xee, 0x0b, 0xc7, 0xe4, 0x23, 0x28, 0x9e, 0x7a, 0x51, 0x9f, 0x49, 0xfa, 0x08, 0x7d, 0x36, 0x12,
0x79, 0x0d, 0xa5, 0xf7, 0x81, 0x3f, 0xf4, 0xa5, 0xa0, 0x1f, 0x61, 0x59, 0x78, 0xba, 0xd8, 0xb8,
0x06, 0x1d, 0x8f, 0xa4, 0x1b, 0xe3, 0xd5, 0x6e, 0x31, 0xde, 0x2c, 0xa2, 0x3f, 0x41, 0x9b, 0xb1,
0xa8, 0x66, 0x4c, 0xb8, 0x28, 0xdd, 0xb4, 0xea, 0x65, 0x37, 0x16, 0xd5, 0xd6, 0x4e, 0xc6, 0x41,
0x40, 0x1f, 0xa3, 0x1a, 0xc7, 0xfa, 0xec, 0x55, 0x1a, 0x9c, 0x8c, 0xc5, 0x05, 0xb5, 0x71, 0x26,
0xa5, 0x99, 0xce, 0xbf, 0xe5, 0x5e, 0x8f, 0x3e, 0x49, 0xcf, 0x2b, 0x8d, 0xfd, 0x1b, 0x20, 0xf3,
0x57, 0x5d, 0x55, 0xc0, 0x01, 0x9b, 0xc4, 0x15, 0x70, 0xc0, 0x26, 0xea, 0xb6, 0x5f, 0x7a, 0xc1,
0x38, 0xae, 0x43, 0x5a, 0xf8, 0x26, 0xf7, 0xb5, 0x65, 0x7f, 0x0b, 0x6b, 0xb3, 0xb7, 0xf0, 0x5e,
0xec, 0xd7, 0x50, 0x4d, 0xa5, 0xda, 0x7d, 0xa8, 0xce, 0xbf, 0x2c, 0xa8, 0xa6, 0xee, 0x03, 0x9e,
0xdc, 0x64, 0xc4, 0x0c, 0x19, 0xc7, 0x64, 0x17, 0x56, 0x76, 0xa4, 0x8c, 0x54, 0xd9, 0x56, 0x87,
0xff, 0x8b, 0x5b, 0x6f, 0x55, 0x03, 0xe1, 0x3a, 0xef, 0x35, 0x55, 0xa5, 0xfd, 0x1e, 0x13, 0xd2,
0x0f, 0x3d, 0x75, 0x35, 0x4c, 0x95, 0x4d, 0xab, 0xec, 0xaf, 0x01, 0xa6, 0xb4, 0x7b, 0xf9, 0xf0,
0x0f, 0x0b, 0x1e, 0xce, 0x95, 0x8e, 0x85, 0x9e, 0x1c, 0xcc, 0x7a, 0xb2, 0x7d, 0xc7, 0x32, 0x34,
0xef, 0xcf, 0x0f, 0xd8, 0xed, 0x11, 0x14, 0x75, 0xbd, 0x5e, 0xb8, 0x43, 0x1b, 0xca, 0x7b, 0xbe,
0xf0, 0x3a, 0x01, 0xeb, 0x21, 0xb5, 0xec, 0x26, 0x32, 0x3e, 0x16, 0xb8, 0x7b, 0x1d, 0x3d, 0x2d,
0x38, 0xfa, 0x62, 0x92, 0x35, 0xc8, 0x25, 0x7d, 0x44, 0xee, 0x70, 0x4f, 0x81, 0xd5, 0x23, 0xa8,
0x5d, 0xad, 0xb8, 0x5a, 0x70, 0x5a, 0x50, 0xd4, 0x57, 0x7d, 0x0e, 0x6f, 0x43, 0xb9, 0xe5, 0x07,
0x0c, 0xdf, 0x52, 0xbd, 0xe7, 0x44, 0x56, 0xee, 0xed, 0x87, 0x97, 0x66, 0x59, 0x35, 0x74, 0x1c,
0x58, 0x3b, 0x0c, 0xc5, 0x88, 0x75, 0x65, 0x76, 0x07, 0x75, 0x0c, 0x0f, 0x12, 0x8c, 0xe9, 0x9d,
0x52, 0x2d, 0x80, 0x75, 0xff, 0x16, 0xe0, 0xef, 0x16, 0x54, 0x92, 0x2a, 0x40, 0x9a, 0x50, 0xc4,
0xa0, 0xc6, 0x8d, 0xd8, 0xcb, 0x5b, 0xca, 0x46, 0xe3, 0x0c, 0xd1, 0xa6, 0x1a, 0x6b, 0xaa, 0xfd,
0x3d, 0x54, 0x53, 0xea, 0x05, 0xe7, 0xb8, 0x9d, 0x3e, 0xc7, 0xcc, 0x32, 0xaa, 0x17, 0x49, 0x9f,
0xf2, 0x1e, 0x14, 0xb5, 0x52, 0x9d, 0x32, 0xf6, 0x1e, 0xe6, 0x94, 0xb1, 0xe3, 0x20, 0x50, 0x38,
0xf0, 0x22, 0x7d, 0xc2, 0x79, 0x17, 0xc7, 0x4a, 0xd7, 0xe6, 0xe7, 0x12, 0xa3, 0x9c, 0x77, 0x71,
0xec, 0xfc, 0xd3, 0x82, 0x9a, 0xe9, 0xaa, 0x4c, 0x04, 0x19, 0xac, 0xeb, 0x8b, 0xc6, 0xa2, 0x58,
0x67, 0xfc, 0x7f, 0xbd, 0x24, 0x94, 0x31, 0xb4, 0x71, 0x93, 0xab, 0xa3, 0x31, 0x67, 0xd2, 0x6e,
0xc2, 0xa3, 0x85, 0xd0, 0x7b, 0x65, 0xfa, 0xa7, 0xf0, 0x70, 0xda, 0x2f, 0x66, 0xe7, 0xc9, 0x06,
0x90, 0x34, 0xcc, 0xf4, 0x93, 0x4f, 0xa1, 0xaa, 0xfa, 0xef, 0x6c, 0x9a, 0x03, 0xab, 0x1a, 0x60,
0x22, 0x43, 0xa0, 0x30, 0x60, 0x13, 0x9d, 0x0d, 0x15, 0x17, 0xc7, 0xce, 0xdf, 0x2c, 0xd5, 0x46,
0x8f, 0xc6, 0xf2, 0x1d, 0x13, 0xc2, 0xeb, 0xab, 0x04, 0x2c, 0x1c, 0x86, 0xbe, 0x34, 0xd9, 0xf7,
0x59, 0x56, 0x3b, 0x3d, 0x1a, 0x4b, 0x05, 0x33, 0xac, 0x83, 0x1f, 0xb9, 0xc8, 0x22, 0xaf, 0xa0,
0xb0, 0xe7, 0x49, 0xcf, 0xe4, 0x42, 0x46, 0x77, 0xa1, 0x10, 0x29, 0xa2, 0x12, 0x77, 0x4b, 0xea,
0x3f, 0xc3, 0x68, 0x2c, 0x9d, 0x17, 0xb0, 0x7e, 0xd3, 0xfa, 0x02, 0xd7, 0xbe, 0x84, 0x6a, 0xca,
0x0a, 0x5e, 0xbf, 0xe3, 0x16, 0x02, 0xca, 0xae, 0x1a, 0x2a, 0x5f, 0x93, 0x8d, 0xac, 0xea, 0x35,
0x9c, 0x07, 0x50, 0x43, 0xd3, 0x49, 0x04, 0xff, 0x9c, 0x83, 0x52, 0x6c, 0xe2, 0xd5, 0x8c, 0xdf,
0xcf, 0xb2, 0xfc, 0x9e, 0x77, 0xf9, 0x2b, 0x28, 0xa8, 0x32, 0x60, 0x5c, 0xce, 0x78, 0x9a, 0x5b,
0xbd, 0x14, 0x4d, 0xc1, 0xc9, 0xaf, 0xa1, 0xe8, 0x32, 0xa1, 0xda, 0x88, 0x3c, 0x12, 0x9f, 0x2f,
0x26, 0x6a, 0xcc, 0x94, 0x6c, 0x48, 0x8a, 0xde, 0xf6, 0xfb, 0xa1, 0x17, 0xd0, 0xc2, 0x32, 0xba,
0xc6, 0xa4, 0xe8, 0x5a, 0x31, 0x0d, 0xf7, 0x5f, 0x2c, 0xa8, 0x2e, 0x0d, 0xf5, 0xf2, 0x7f, 0x3c,
0x73, 0xff, 0xc2, 0xf2, 0xff, 0xe7, 0xbf, 0xb0, 0xff, 0x58, 0xb3, 0x86, 0xb0, 0xa3, 0x50, 0xf7,
0x69, 0xc4, 0xfd, 0x50, 0x9a, 0x94, 0x4d, 0x69, 0xd4, 0x46, 0x9b, 0xc3, 0x9e, 0xa9, 0xdd, 0x6a,
0x38, 0xad, 0xc1, 0x79, 0x53, 0x83, 0x55, 0x12, 0xbc, 0x17, 0x2c, 0xc2, 0x10, 0x55, 0x5c, 0x1c,
0xab, 0x26, 0xeb, 0x88, 0xa3, 0x76, 0x05, 0xb3, 0xc5, 0x48, 0x68, 0xef, 0xaa, 0x47, 0x8b, 0xda,
0xf1, 0xe6, 0x15, 0x3e, 0x26, 0x47, 0x5c, 0xe9, 0x4a, 0x08, 0xd4, 0x82, 0xc2, 0x9d, 0xca, 0x09,
0x2d, 0xeb, 0x54, 0x3b, 0x95, 0x13, 0xf5, 0x2e, 0xb8, 0x3c, 0x08, 0x3a, 0x5e, 0x77, 0x40, 0x2b,
0xfa, 0x41, 0x8a, 0x65, 0xd5, 0x65, 0xa9, 0xe8, 0xfa, 0x5e, 0x80, 0xfd, 0x78, 0xd9, 0x8d, 0x45,
0x67, 0x07, 0x2a, 0x49, 0x52, 0xa8, 0xa7, 0xa6, 0xd5, 0xc3, 0xa0, 0xd7, 0xdc, 0x5c, 0xab, 0x17,
0xe7, 0x73, 0x6e, 0x3e, 0x9f, 0xf3, 0xa9, 0x7c, 0x7e, 0x05, 0xb5, 0x99, 0xf4, 0x50, 0x20, 0x97,
0x5f, 0x09, 0x63, 0x08, 0xc7, 0x4a, 0xd7, 0xe4, 0x81, 0xfe, 0x43, 0x59, 0x73, 0x71, 0xec, 0x3c,
0x87, 0xda, 0x4c, 0x62, 0x2c, 0xaa, 0xc0, 0xce, 0x33, 0xa8, 0xb5, 0xa5, 0x27, 0xc7, 0x4b, 0xbe,
0x00, 0xfc, 0xd7, 0x82, 0xb5, 0x18, 0x63, 0x6a, 0xcc, 0x2f, 0xa1, 0x7c, 0xc9, 0x22, 0xc9, 0xae,
0x93, 0x57, 0x87, 0x36, 0x86, 0xbc, 0x33, 0x69, 0xc4, 0xdf, 0x20, 0x54, 0x1e, 0x9c, 0x21, 0xc2,
0x4d, 0x90, 0xe4, 0x1b, 0x28, 0x0b, 0xb4, 0xc3, 0xe2, 0xc6, 0xe3, 0x93, 0x2c, 0x96, 0x59, 0x2f,
0xc1, 0x93, 0x2d, 0x28, 0x04, 0xbc, 0x2f, 0xf0, 0xdc, 0xab, 0xdb, 0x4f, 0xb2, 0x78, 0x6f, 0x79,
0xdf, 0x45, 0x20, 0x79, 0x03, 0xe5, 0x2b, 0x2f, 0x0a, 0xfd, 0xb0, 0x1f, 0xff, 0x53, 0x7d, 0x9a,
0x45, 0xfa, 0x5e, 0xe3, 0xdc, 0x84, 0xe0, 0xd4, 0xd4, 0x75, 0x39, 0xe7, 0x26, 0x26, 0xce, 0x6f,
0x55, 0xd6, 0x2a, 0xd1, 0xb8, 0x7f, 0x08, 0x35, 0x9d, 0xf9, 0x67, 0x2c, 0x12, 0xaa, 0x8d, 0xb3,
0x96, 0xdd, 0xce, 0xdd, 0x34, 0xd4, 0x9d, 0x65, 0x3a, 0x1f, 0xcc, 0xc3, 0x16, 0x2b, 0x54, 0x2e,
0x8d, 0xbc, 0xee, 0xc0, 0xeb, 0xc7, 0xe7, 0x14, 0x8b, 0x6a, 0xe6, 0xd2, 0xac, 0xa7, 0x2f, 0x68,
0x2c, 0xaa, 0xdc, 0x8c, 0xd8, 0xa5, 0x2f, 0xa6, 0x1d, 0x65, 0x22, 0x6f, 0xff, 0xb5, 0x04, 0xd0,
0x4c, 0xf6, 0x43, 0x4e, 0x60, 0x05, 0xd7, 0x23, 0xce, 0xd2, 0x67, 0x12, 0xfd, 0xb6, 0x9f, 0xdf,
0xe1, 0x29, 0x25, 0x67, 0x2a, 0xf9, 0xb1, 0xbd, 0x21, 0x2f, 0xb2, 0x0a, 0x42, 0xba, 0x43, 0xb2,
0x3f, 0xbd, 0x05, 0x65, 0xec, 0xbe, 0x87, 0xa2, 0xce, 0x02, 0x92, 0x55, 0xf5, 0xd2, 0x79, 0x6b,
0xbf, 0x58, 0x0e, 0xd2, 0x46, 0x3f, 0xb7, 0x88, 0x6b, 0x6a, 0x22, 0x71, 0x96, 0x3c, 0x7a, 0xe6,
0xc6, 0x64, 0x05, 0x60, 0xe6, 0x7d, 0xa9, 0x5b, 0xe4, 0x3b, 0x28, 0xea, 0xaa, 0x46, 0x7e, 0xba,
0x98, 0x10, 0xdb, 0x5b, 0x3e, 0x5d, 0xb7, 0x3e, 0xb7, 0xc8, 0x3b, 0x28, 0xa8, 0xe7, 0x9c, 0x64,
0xbc, 0x4d, 0xa9, 0x5e, 0xc0, 0x76, 0x96, 0x41, 0x4c, 0x14, 0x3f, 0x00, 0x4c, 0x9b, 0x0a, 0x92,
0xf1, 0xbd, 0x61, 0xae, 0x3b, 0xb1, 0xeb, 0xb7, 0x03, 0xcd, 0x02, 0xef, 0xd4, 0x8b, 0x7a, 0xce,
0x49, 0xe6, 0x5b, 0x9a, 0x5c, 0x23, 0xdb, 0x59, 0x06, 0x31, 0xe6, 0x2e, 0xa0, 0x36, 0xf3, 0xb9,
0x91, 0xfc, 0x3c, 0xdb, 0xc9, 0x9b, 0x5f, 0x2f, 0xed, 0x97, 0x77, 0xc2, 0x9a, 0x95, 0x64, 0xba,
0x2b, 0x33, 0xd3, 0xa4, 0x71, 0x9b, 0xdf, 0xb3, 0x9f, 0x0e, 0xed, 0xad, 0x3b, 0xe3, 0xf5, 0xaa,
0xbb, 0x85, 0xdf, 0xe5, 0x46, 0x9d, 0x4e, 0x11, 0xbf, 0xc2, 0x7e, 0xf9, 0xbf, 0x00, 0x00, 0x00,
0xff, 0xff, 0xdd, 0x5f, 0x66, 0x08, 0xec, 0x15, 0x00, 0x00,
// 1838 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x58, 0x5f, 0x6f, 0xdb, 0xc8,
0x11, 0x2f, 0x25, 0x59, 0x7f, 0x46, 0x96, 0xe3, 0x6c, 0x9d, 0x74, 0xc3, 0x5c, 0x2f, 0x0e, 0x93,
0xbb, 0x0a, 0x4d, 0x21, 0xdf, 0xf9, 0x7a, 0xf5, 0xe5, 0x72, 0x07, 0xd4, 0x96, 0x2d, 0xd8, 0x87,
0xc4, 0x36, 0x56, 0x4e, 0x0e, 0x6d, 0x81, 0x1e, 0x28, 0x69, 0x2d, 0x13, 0xa2, 0xb8, 0x2a, 0x77,
0x65, 0x5b, 0x7d, 0xea, 0x4b, 0xdf, 0x8a, 0x7e, 0x8f, 0xa2, 0x1f, 0xa1, 0x4f, 0xfd, 0x42, 0x45,
0x5f, 0xfa, 0x5e, 0xec, 0x1f, 0x52, 0xa4, 0x25, 0xd2, 0x76, 0xfb, 0xa4, 0x9d, 0xe1, 0x6f, 0x66,
0x76, 0x86, 0xf3, 0x4f, 0x84, 0xf5, 0x3e, 0x0b, 0x44, 0xc8, 0x7c, 0x9f, 0x86, 0xad, 0x49, 0xc8,
0x04, 0x43, 0x1b, 0xbd, 0xa9, 0xe7, 0x0f, 0xae, 0x5b, 0x89, 0x07, 0x97, 0x9f, 0xdb, 0x6f, 0x86,
0x9e, 0xb8, 0x98, 0xf6, 0x5a, 0x7d, 0x36, 0xde, 0x1a, 0xb3, 0xde, 0x6c, 0x4b, 0xa1, 0x46, 0x9e,
0xd8, 0x72, 0x27, 0xde, 0x16, 0xa7, 0xe1, 0xa5, 0xd7, 0xa7, 0x7c, 0xcb, 0x08, 0x45, 0xbf, 0x5a,
0xa5, 0xd3, 0x84, 0x8d, 0xb7, 0x1e, 0x17, 0xa7, 0x21, 0xeb, 0x53, 0xce, 0x29, 0x27, 0xf4, 0x0f,
0x53, 0xca, 0x05, 0x5a, 0x87, 0x22, 0xa1, 0xe7, 0xd8, 0xda, 0xb4, 0x9a, 0x35, 0x22, 0x8f, 0xce,
0x29, 0x3c, 0xba, 0x81, 0xe4, 0x13, 0x16, 0x70, 0x8a, 0x76, 0x60, 0xe5, 0x28, 0x38, 0x67, 0x1c,
0x5b, 0x9b, 0xc5, 0x66, 0x7d, 0xfb, 0x79, 0x6b, 0xd9, 0x2d, 0x5b, 0x46, 0x4e, 0x22, 0x89, 0xc6,
0x3b, 0x1c, 0xea, 0x09, 0x2e, 0xfa, 0x08, 0x6a, 0x11, 0xb9, 0x6f, 0x0c, 0xcf, 0x19, 0xa8, 0x03,
0xab, 0x47, 0xc1, 0x25, 0x1b, 0xd1, 0x36, 0x0b, 0xce, 0xbd, 0x21, 0x2e, 0x6c, 0x5a, 0xcd, 0xfa,
0xb6, 0xb3, 0xdc, 0x58, 0x12, 0x49, 0x52, 0x72, 0xce, 0x77, 0x80, 0xf7, 0x3d, 0xde, 0x67, 0x41,
0x40, 0xfb, 0x91, 0x33, 0x99, 0x4e, 0xa7, 0xef, 0x54, 0xb8, 0x71, 0x27, 0xe7, 0x29, 0x3c, 0x59,
0xa2, 0x4b, 0x87, 0xc5, 0xf9, 0x3d, 0xac, 0xee, 0xc9, 0xbb, 0x65, 0x2b, 0xff, 0x06, 0x2a, 0x27,
0x13, 0xe1, 0xb1, 0x80, 0xe7, 0x7b, 0xa3, 0xd4, 0x18, 0x24, 0x89, 0x44, 0x9c, 0xff, 0x80, 0x31,
0x60, 0x18, 0x68, 0x13, 0xea, 0x6d, 0x16, 0x08, 0x7a, 0x2d, 0x4e, 0x5d, 0x71, 0x61, 0x0c, 0x25,
0x59, 0xe8, 0x53, 0x58, 0xdb, 0x67, 0xfd, 0x11, 0x0d, 0xcf, 0x3d, 0x9f, 0x1e, 0xbb, 0x63, 0x6a,
0x5c, 0xba, 0xc1, 0x45, 0xdf, 0x4a, 0xaf, 0xbd, 0x40, 0x74, 0xa6, 0x41, 0x1f, 0x17, 0xd5, 0xd5,
0x9e, 0x65, 0xbd, 0x55, 0x03, 0x23, 0x73, 0x09, 0xf4, 0x3b, 0x68, 0x48, 0x35, 0x03, 0x63, 0x9a,
0xe3, 0x92, 0x4a, 0x8c, 0x2f, 0x6f, 0xf7, 0xae, 0x95, 0x92, 0x3b, 0x08, 0x44, 0x38, 0x23, 0x69,
0x5d, 0x68, 0x03, 0x56, 0x76, 0x7d, 0x9f, 0x5d, 0xe1, 0x95, 0xcd, 0x62, 0xb3, 0x46, 0x34, 0x81,
0x7e, 0x05, 0x95, 0x5d, 0x21, 0x28, 0x17, 0x1c, 0x97, 0x95, 0xb1, 0x8f, 0x96, 0x1b, 0xd3, 0x20,
0x12, 0x81, 0xd1, 0x09, 0xd4, 0x94, 0xfd, 0xdd, 0x70, 0xc8, 0x71, 0x45, 0x49, 0x7e, 0x7e, 0x87,
0x6b, 0xc6, 0x32, 0xfa, 0x8a, 0x73, 0x1d, 0xe8, 0x00, 0x6a, 0x6d, 0xb7, 0x7f, 0x41, 0x3b, 0x21,
0x1b, 0xe3, 0xaa, 0x52, 0xf8, 0xb3, 0xe5, 0x0a, 0x15, 0xcc, 0x28, 0x34, 0x6a, 0x62, 0x49, 0xb4,
0x0b, 0x15, 0x45, 0x9c, 0x31, 0x5c, 0xbb, 0x9f, 0x92, 0x48, 0x0e, 0x39, 0xb0, 0xda, 0x1e, 0x86,
0x6c, 0x3a, 0x39, 0x75, 0x43, 0x1a, 0x08, 0x0c, 0xea, 0x55, 0xa7, 0x78, 0xe8, 0x0d, 0x54, 0x0e,
0xae, 0x27, 0x2c, 0x14, 0x1c, 0xd7, 0xf3, 0x8a, 0x57, 0x83, 0x8c, 0x01, 0x23, 0x81, 0x3e, 0x06,
0x38, 0xb8, 0x16, 0xa1, 0x7b, 0xc8, 0x64, 0xd8, 0x57, 0xd5, 0xeb, 0x48, 0x70, 0x50, 0x07, 0xca,
0x6f, 0xdd, 0x1e, 0xf5, 0x39, 0x6e, 0x28, 0xdd, 0xad, 0x3b, 0x04, 0x56, 0x0b, 0x68, 0x43, 0x46,
0x5a, 0xe6, 0xf5, 0x31, 0x15, 0x57, 0x2c, 0x1c, 0xbd, 0x63, 0x03, 0x8a, 0xd7, 0x74, 0x5e, 0x27,
0x58, 0xe8, 0x25, 0x34, 0x8e, 0x99, 0x0e, 0x9e, 0xe7, 0x0b, 0x1a, 0xe2, 0x07, 0xea, 0x32, 0x69,
0xa6, 0xaa, 0x65, 0xdf, 0x15, 0xe7, 0x2c, 0x1c, 0x73, 0xbc, 0xae, 0x10, 0x73, 0x86, 0xcc, 0xa0,
0x2e, 0xed, 0x87, 0x54, 0x70, 0xfc, 0x30, 0x2f, 0x83, 0x34, 0x88, 0x44, 0x60, 0x84, 0xa1, 0xd2,
0xbd, 0x18, 0x77, 0xbd, 0x3f, 0x52, 0x8c, 0x36, 0xad, 0x66, 0x91, 0x44, 0x24, 0x7a, 0x05, 0xc5,
0x6e, 0xf7, 0x10, 0xff, 0x58, 0x69, 0x7b, 0x92, 0xa1, 0xad, 0x7b, 0x48, 0x24, 0x0a, 0x21, 0x28,
0x9d, 0xb9, 0x43, 0x8e, 0x37, 0xd4, 0xbd, 0xd4, 0x19, 0x3d, 0x86, 0xf2, 0x99, 0x1b, 0x0e, 0xa9,
0xc0, 0x8f, 0x94, 0xcf, 0x86, 0x42, 0xaf, 0xa1, 0xf2, 0xde, 0xf7, 0xc6, 0x9e, 0xe0, 0xf8, 0x71,
0x5e, 0x71, 0x6a, 0xd0, 0xc9, 0x44, 0x90, 0x08, 0x2f, 0x6f, 0xab, 0xe2, 0x4d, 0x43, 0xfc, 0x13,
0xa5, 0x33, 0x22, 0xe5, 0x13, 0x13, 0x2e, 0x8c, 0x37, 0xad, 0x66, 0x95, 0x44, 0xa4, 0xbc, 0xda,
0xe9, 0xd4, 0xf7, 0xf1, 0x13, 0xc5, 0x56, 0x67, 0xfd, 0xee, 0x65, 0x1a, 0x9c, 0x4e, 0xf9, 0x05,
0xb6, 0xd5, 0x93, 0x04, 0x67, 0xfe, 0xfc, 0x2d, 0x73, 0x07, 0xf8, 0x69, 0xf2, 0xb9, 0xe4, 0xd8,
0xbf, 0x06, 0xb4, 0x58, 0xea, 0xb2, 0x45, 0x8e, 0xe8, 0x2c, 0x6a, 0x91, 0x23, 0x3a, 0x93, 0xd5,
0x7e, 0xe9, 0xfa, 0xd3, 0xa8, 0x51, 0x69, 0xe2, 0xeb, 0xc2, 0x57, 0x96, 0xfd, 0x0d, 0xac, 0xa5,
0xab, 0xf0, 0x5e, 0xd2, 0xaf, 0xa1, 0x9e, 0x48, 0xb5, 0xfb, 0x88, 0x3a, 0xff, 0xb4, 0xa0, 0x9e,
0xa8, 0x07, 0xf5, 0xe6, 0x66, 0x13, 0x6a, 0x84, 0xd5, 0x19, 0xed, 0xc1, 0xca, 0xae, 0x10, 0xa1,
0xec, 0xeb, 0xf2, 0xe5, 0xff, 0xe2, 0xd6, 0xaa, 0x6a, 0x29, 0xb8, 0xce, 0x7b, 0x2d, 0x2a, 0xd3,
0x7e, 0x9f, 0x72, 0xe1, 0x05, 0xae, 0x2c, 0x0d, 0xd5, 0x86, 0x6b, 0x24, 0xc9, 0xb2, 0xbf, 0x02,
0x98, 0x8b, 0xdd, 0xcb, 0x87, 0xbf, 0x5b, 0xf0, 0x70, 0xa1, 0x75, 0x2c, 0xf5, 0xe4, 0x30, 0xed,
0xc9, 0xf6, 0x1d, 0xdb, 0xd0, 0xa2, 0x3f, 0xff, 0xc7, 0x6d, 0x8f, 0xa1, 0xac, 0xfb, 0xf5, 0xd2,
0x1b, 0xda, 0x50, 0xdd, 0xf7, 0xb8, 0xdb, 0xf3, 0xe9, 0x40, 0x89, 0x56, 0x49, 0x4c, 0xab, 0x61,
0xa1, 0x6e, 0xaf, 0xa3, 0xa7, 0x09, 0x47, 0x17, 0x26, 0x5a, 0x83, 0x42, 0xbc, 0x68, 0x14, 0x8e,
0xf6, 0x25, 0x58, 0x4e, 0x49, 0xed, 0x6a, 0x8d, 0x68, 0xc2, 0xe9, 0x40, 0x59, 0x97, 0xfa, 0x02,
0xde, 0x86, 0x6a, 0xc7, 0xf3, 0xa9, 0x1a, 0xb6, 0xfa, 0xce, 0x31, 0x2d, 0xdd, 0x3b, 0x08, 0x2e,
0x8d, 0x59, 0x79, 0x74, 0x76, 0x12, 0x33, 0x55, 0xfa, 0xa1, 0xc6, 0xaf, 0xf1, 0x43, 0x0d, 0xdd,
0xc7, 0x50, 0xee, 0xb0, 0x70, 0xec, 0x0a, 0xa3, 0xcc, 0x50, 0x8e, 0x03, 0x6b, 0x47, 0x01, 0x9f,
0xd0, 0xbe, 0xc8, 0xde, 0xcd, 0x4e, 0xe0, 0x41, 0x8c, 0x31, 0x5b, 0x59, 0x62, 0xb9, 0xb0, 0xee,
0xbf, 0x5c, 0xfc, 0xcd, 0x82, 0x5a, 0xdc, 0x3e, 0x50, 0x1b, 0xca, 0xea, 0x6d, 0x44, 0x2b, 0xde,
0xab, 0x5b, 0xfa, 0x4d, 0xeb, 0x83, 0x42, 0x9b, 0x36, 0xae, 0x45, 0xed, 0xef, 0xa1, 0x9e, 0x60,
0x2f, 0x49, 0x80, 0xed, 0x64, 0x02, 0x64, 0xf6, 0x5f, 0x6d, 0x24, 0x99, 0x1e, 0xfb, 0x50, 0xd6,
0xcc, 0xa5, 0x61, 0x45, 0x50, 0x3a, 0x74, 0x43, 0x9d, 0x1a, 0x45, 0xa2, 0xce, 0x92, 0xd7, 0x65,
0xe7, 0x42, 0xbd, 0x9e, 0x22, 0x51, 0x67, 0xe7, 0x1f, 0x16, 0x34, 0xcc, 0xbe, 0x66, 0x22, 0x48,
0x61, 0x5d, 0x57, 0x28, 0x0d, 0x23, 0x9e, 0xf1, 0xff, 0x75, 0x4e, 0x28, 0x23, 0x68, 0xeb, 0xa6,
0xac, 0x8e, 0xc6, 0x82, 0x4a, 0xbb, 0x0d, 0x8f, 0x96, 0x42, 0xef, 0x55, 0x22, 0x9f, 0xc0, 0xc3,
0xf9, 0x26, 0x9a, 0x9d, 0x27, 0x1b, 0x80, 0x92, 0x30, 0xb3, 0xa9, 0x3e, 0x83, 0xba, 0xdc, 0xec,
0xb3, 0xc5, 0x1c, 0x58, 0xd5, 0x00, 0x13, 0x19, 0x04, 0xa5, 0x11, 0x9d, 0xe9, 0x6c, 0xa8, 0x11,
0x75, 0x76, 0xfe, 0x6a, 0xc9, 0x05, 0x7d, 0x32, 0x15, 0xef, 0x28, 0xe7, 0xee, 0x50, 0x26, 0x60,
0xe9, 0x28, 0xf0, 0x84, 0xc9, 0xbe, 0x4f, 0xb3, 0x16, 0xf5, 0xc9, 0x54, 0x48, 0x98, 0x91, 0x3a,
0xfc, 0x11, 0x51, 0x52, 0x68, 0x07, 0x4a, 0xfb, 0xae, 0x70, 0x4d, 0x2e, 0x64, 0xac, 0x25, 0x12,
0x91, 0x10, 0x94, 0xe4, 0x5e, 0x45, 0xfe, 0x1b, 0x99, 0x4c, 0x85, 0xf3, 0x12, 0xd6, 0x6f, 0x6a,
0x5f, 0xe2, 0xda, 0x17, 0x50, 0x4f, 0x68, 0x51, 0x75, 0x7b, 0xd2, 0x51, 0x80, 0x2a, 0x91, 0x47,
0xe9, 0x6b, 0x7c, 0x91, 0x55, 0x6d, 0xc3, 0x79, 0x00, 0x0d, 0xa5, 0x3a, 0x8e, 0xe0, 0x9f, 0x0a,
0x50, 0x89, 0x54, 0xec, 0xa4, 0xfc, 0x7e, 0x9e, 0xe5, 0xf7, 0xa2, 0xcb, 0x5f, 0x42, 0x49, 0xf6,
0x0f, 0xe3, 0x72, 0xc6, 0x4c, 0xef, 0x0c, 0x12, 0x62, 0x12, 0x8e, 0xbe, 0x85, 0x32, 0xa1, 0x5c,
0xee, 0x1f, 0x7a, 0x53, 0x7f, 0xb1, 0x5c, 0x50, 0x63, 0xe6, 0xc2, 0x46, 0x48, 0x8a, 0x77, 0xbd,
0x61, 0xe0, 0xfa, 0xb8, 0x94, 0x27, 0xae, 0x31, 0x09, 0x71, 0xcd, 0x98, 0x87, 0xfb, 0xcf, 0x16,
0xd4, 0x73, 0x43, 0x9d, 0xff, 0x5f, 0x6a, 0xe1, 0xff, 0x5d, 0xf1, 0x7f, 0xfc, 0x7f, 0xf7, 0x2f,
0x2b, 0xad, 0x48, 0xad, 0x22, 0xb2, 0x9e, 0x26, 0xcc, 0x0b, 0x84, 0x49, 0xd9, 0x04, 0x47, 0x5e,
0xb4, 0x3d, 0x1e, 0x98, 0xa6, 0x2f, 0x8f, 0xf3, 0xe6, 0x5d, 0x34, 0xcd, 0x5b, 0x26, 0xc1, 0x7b,
0x4e, 0x43, 0x15, 0xa2, 0x1a, 0x51, 0x67, 0xd9, 0xaf, 0x8f, 0x99, 0xe2, 0xae, 0xa8, 0x6c, 0x31,
0x94, 0xd2, 0x77, 0x35, 0xc0, 0x65, 0xed, 0x78, 0xfb, 0x4a, 0x4d, 0xa1, 0x63, 0x26, 0x79, 0x15,
0x05, 0xd4, 0x84, 0xc4, 0x9d, 0x89, 0x19, 0xae, 0xea, 0x54, 0x3b, 0x13, 0x33, 0x39, 0x50, 0x08,
0xf3, 0xfd, 0x9e, 0xdb, 0x1f, 0xe1, 0x9a, 0x9e, 0x64, 0x11, 0x2d, 0xd7, 0x33, 0x19, 0x5d, 0xcf,
0xf5, 0xd5, 0x22, 0x5f, 0x25, 0x11, 0xe9, 0xec, 0x42, 0x2d, 0x4e, 0x0a, 0x39, 0xa3, 0x3a, 0x03,
0x15, 0xf4, 0x06, 0x29, 0x74, 0x06, 0x51, 0x3e, 0x17, 0x16, 0xf3, 0xb9, 0x98, 0xc8, 0xe7, 0x1d,
0x68, 0xa4, 0xd2, 0x43, 0x82, 0x08, 0xbb, 0xe2, 0x46, 0x91, 0x3a, 0x4b, 0x5e, 0x9b, 0xf9, 0xfa,
0xaf, 0x6a, 0x83, 0xa8, 0xb3, 0xf3, 0x02, 0x1a, 0xa9, 0xc4, 0x58, 0xd6, 0x81, 0x9d, 0xe7, 0xd0,
0xe8, 0x0a, 0x57, 0x4c, 0x73, 0xbe, 0x2d, 0xfc, 0xdb, 0x82, 0xb5, 0x08, 0x63, 0x7a, 0xcc, 0x2f,
0xa1, 0x7a, 0x49, 0x43, 0x41, 0xaf, 0xe3, 0xa9, 0x83, 0x5b, 0x63, 0xd6, 0x9b, 0xb5, 0xa2, 0xaf,
0x1b, 0x32, 0x0f, 0x3e, 0x28, 0x04, 0x89, 0x91, 0xe8, 0x6b, 0xa8, 0x72, 0xa5, 0x87, 0x46, 0x1b,
0xcb, 0xc7, 0x59, 0x52, 0xc6, 0x5e, 0x8c, 0x47, 0x5b, 0x50, 0xf2, 0xd9, 0x90, 0xab, 0xf7, 0x5e,
0xdf, 0x7e, 0x9a, 0x25, 0xf7, 0x96, 0x0d, 0x89, 0x02, 0xa2, 0x37, 0x50, 0xbd, 0x72, 0xc3, 0xc0,
0x0b, 0x86, 0xd1, 0x5f, 0xdc, 0x67, 0x59, 0x42, 0xdf, 0x6b, 0x1c, 0x89, 0x05, 0x9c, 0x86, 0x2c,
0x97, 0x73, 0x66, 0x62, 0xe2, 0xfc, 0x46, 0x66, 0xad, 0x24, 0x8d, 0xfb, 0x47, 0xd0, 0xd0, 0x99,
0xff, 0x81, 0x86, 0x5c, 0xee, 0x7f, 0x56, 0x5e, 0x75, 0xee, 0x25, 0xa1, 0x24, 0x2d, 0xe9, 0xfc,
0x60, 0x06, 0x5b, 0xc4, 0x90, 0xb9, 0x34, 0x71, 0xfb, 0x23, 0x77, 0x18, 0xbd, 0xa7, 0x88, 0x94,
0x4f, 0x2e, 0x8d, 0x3d, 0x5d, 0xa0, 0x11, 0x29, 0x73, 0x33, 0xa4, 0x97, 0x1e, 0x9f, 0xaf, 0xa2,
0x31, 0xbd, 0xfd, 0x97, 0x0a, 0x40, 0x3b, 0xbe, 0x0f, 0x3a, 0x85, 0x15, 0x65, 0x0f, 0x39, 0xb9,
0x63, 0x52, 0xf9, 0x6d, 0xbf, 0xb8, 0xc3, 0x28, 0x45, 0x1f, 0x64, 0xf2, 0xab, 0xf5, 0x06, 0xbd,
0xcc, 0x6a, 0x08, 0xc9, 0x0d, 0xc9, 0xfe, 0xe4, 0x16, 0x94, 0xd1, 0xfb, 0x1e, 0xca, 0x3a, 0x0b,
0x50, 0x56, 0xd7, 0x4b, 0xe6, 0xad, 0xfd, 0x32, 0x1f, 0xa4, 0x95, 0x7e, 0x66, 0x21, 0x62, 0x7a,
0x22, 0x72, 0x72, 0x86, 0x9e, 0xa9, 0x98, 0xac, 0x00, 0xa4, 0xe6, 0x4b, 0xd3, 0x42, 0xdf, 0x41,
0x59, 0x77, 0x35, 0xf4, 0xd3, 0xe5, 0x02, 0x91, 0xbe, 0xfc, 0xc7, 0x4d, 0xeb, 0x33, 0x0b, 0xbd,
0x83, 0x92, 0x1c, 0xe7, 0x28, 0x63, 0x36, 0x25, 0x76, 0x01, 0xdb, 0xc9, 0x83, 0x98, 0x28, 0xfe,
0x00, 0x30, 0x5f, 0x2a, 0x50, 0xc6, 0x87, 0x8a, 0x85, 0xed, 0xc4, 0x6e, 0xde, 0x0e, 0x34, 0x06,
0xde, 0xc9, 0x89, 0x7a, 0xce, 0x50, 0xe6, 0x2c, 0x8d, 0xcb, 0xc8, 0x76, 0xf2, 0x20, 0x46, 0xdd,
0x05, 0x34, 0x52, 0x1f, 0x32, 0xd1, 0xcf, 0xb3, 0x9d, 0xbc, 0xf9, 0x5d, 0xd4, 0x7e, 0x75, 0x27,
0xac, 0xb1, 0x24, 0x92, 0x5b, 0x99, 0x79, 0x8c, 0x5a, 0xb7, 0xf9, 0x9d, 0xfe, 0x28, 0x69, 0x6f,
0xdd, 0x19, 0xaf, 0xad, 0xee, 0x95, 0x7e, 0x5b, 0x98, 0xf4, 0x7a, 0x65, 0xf5, 0x7d, 0xf7, 0x8b,
0xff, 0x06, 0x00, 0x00, 0xff, 0xff, 0xda, 0xfb, 0x1e, 0x3f, 0x46, 0x16, 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.

View File

@ -48,7 +48,7 @@ message BuildRequest {
message BuildOptions {
string ContextPath = 1;
string DockerfileName = 2;
string PrintFunc = 3;
PrintFunc PrintFunc = 3;
map<string, string> NamedContexts = 4;
repeated string Allow = 5;
@ -105,6 +105,11 @@ message Secret {
string Env = 3;
}
message PrintFunc {
string Name = 1;
string Format = 2;
}
message InspectRequest {
string Ref = 1;
}

View File

@ -0,0 +1,37 @@
package buildflags
import (
"encoding/csv"
"strings"
controllerapi "github.com/docker/buildx/controller/pb"
"github.com/pkg/errors"
)
func ParsePrintFunc(str string) (*controllerapi.PrintFunc, error) {
if str == "" {
return nil, nil
}
csvReader := csv.NewReader(strings.NewReader(str))
fields, err := csvReader.Read()
if err != nil {
return nil, err
}
f := &controllerapi.PrintFunc{}
for _, field := range fields {
parts := strings.SplitN(field, "=", 2)
if len(parts) == 2 {
if parts[0] == "format" {
f.Format = parts[1]
} else {
return nil, errors.Errorf("invalid print field: %s", field)
}
} else {
if f.Name != "" {
return nil, errors.Errorf("invalid print value: %s", str)
}
f.Name = field
}
}
return f, nil
}