Service.Exec is a slice of strings (#960)

This commit is contained in:
Milos Gajdos 2019-11-19 19:36:29 +00:00 committed by Asim Aslam
parent 64d5a528ca
commit d6e97c5970
7 changed files with 58 additions and 167 deletions

View File

@ -1,5 +1,5 @@
// Code generated by protoc-gen-micro. DO NOT EDIT. // Code generated by protoc-gen-micro. DO NOT EDIT.
// source: micro/go-micro/runtime/proto/runtime.proto // source: runtime.proto
package go_micro_runtime package go_micro_runtime

View File

@ -1,13 +1,11 @@
// Code generated by protoc-gen-go. DO NOT EDIT. // Code generated by protoc-gen-go. DO NOT EDIT.
// source: micro/go-micro/runtime/proto/runtime.proto // source: runtime.proto
package go_micro_runtime package go_micro_runtime
import ( import (
context "context"
fmt "fmt" fmt "fmt"
proto "github.com/golang/protobuf/proto" proto "github.com/golang/protobuf/proto"
grpc "google.golang.org/grpc"
math "math" math "math"
) )
@ -30,7 +28,7 @@ type Service struct {
// local path of the source // local path of the source
Path string `protobuf:"bytes,3,opt,name=path,proto3" json:"path,omitempty"` Path string `protobuf:"bytes,3,opt,name=path,proto3" json:"path,omitempty"`
// command to execute // command to execute
Exec string `protobuf:"bytes,4,opt,name=exec,proto3" json:"exec,omitempty"` Exec []string `protobuf:"bytes,4,rep,name=exec,proto3" json:"exec,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"` XXX_sizecache int32 `json:"-"`
@ -40,7 +38,7 @@ func (m *Service) Reset() { *m = Service{} }
func (m *Service) String() string { return proto.CompactTextString(m) } func (m *Service) String() string { return proto.CompactTextString(m) }
func (*Service) ProtoMessage() {} func (*Service) ProtoMessage() {}
func (*Service) Descriptor() ([]byte, []int) { func (*Service) Descriptor() ([]byte, []int) {
return fileDescriptor_efcf18966add108e, []int{0} return fileDescriptor_86e2dd377c869464, []int{0}
} }
func (m *Service) XXX_Unmarshal(b []byte) error { func (m *Service) XXX_Unmarshal(b []byte) error {
@ -82,11 +80,11 @@ func (m *Service) GetPath() string {
return "" return ""
} }
func (m *Service) GetExec() string { func (m *Service) GetExec() []string {
if m != nil { if m != nil {
return m.Exec return m.Exec
} }
return "" return nil
} }
type CreateRequest struct { type CreateRequest struct {
@ -100,7 +98,7 @@ func (m *CreateRequest) Reset() { *m = CreateRequest{} }
func (m *CreateRequest) String() string { return proto.CompactTextString(m) } func (m *CreateRequest) String() string { return proto.CompactTextString(m) }
func (*CreateRequest) ProtoMessage() {} func (*CreateRequest) ProtoMessage() {}
func (*CreateRequest) Descriptor() ([]byte, []int) { func (*CreateRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_efcf18966add108e, []int{1} return fileDescriptor_86e2dd377c869464, []int{1}
} }
func (m *CreateRequest) XXX_Unmarshal(b []byte) error { func (m *CreateRequest) XXX_Unmarshal(b []byte) error {
@ -138,7 +136,7 @@ func (m *CreateResponse) Reset() { *m = CreateResponse{} }
func (m *CreateResponse) String() string { return proto.CompactTextString(m) } func (m *CreateResponse) String() string { return proto.CompactTextString(m) }
func (*CreateResponse) ProtoMessage() {} func (*CreateResponse) ProtoMessage() {}
func (*CreateResponse) Descriptor() ([]byte, []int) { func (*CreateResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_efcf18966add108e, []int{2} return fileDescriptor_86e2dd377c869464, []int{2}
} }
func (m *CreateResponse) XXX_Unmarshal(b []byte) error { func (m *CreateResponse) XXX_Unmarshal(b []byte) error {
@ -170,7 +168,7 @@ func (m *DeleteRequest) Reset() { *m = DeleteRequest{} }
func (m *DeleteRequest) String() string { return proto.CompactTextString(m) } func (m *DeleteRequest) String() string { return proto.CompactTextString(m) }
func (*DeleteRequest) ProtoMessage() {} func (*DeleteRequest) ProtoMessage() {}
func (*DeleteRequest) Descriptor() ([]byte, []int) { func (*DeleteRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_efcf18966add108e, []int{3} return fileDescriptor_86e2dd377c869464, []int{3}
} }
func (m *DeleteRequest) XXX_Unmarshal(b []byte) error { func (m *DeleteRequest) XXX_Unmarshal(b []byte) error {
@ -208,7 +206,7 @@ func (m *DeleteResponse) Reset() { *m = DeleteResponse{} }
func (m *DeleteResponse) String() string { return proto.CompactTextString(m) } func (m *DeleteResponse) String() string { return proto.CompactTextString(m) }
func (*DeleteResponse) ProtoMessage() {} func (*DeleteResponse) ProtoMessage() {}
func (*DeleteResponse) Descriptor() ([]byte, []int) { func (*DeleteResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_efcf18966add108e, []int{4} return fileDescriptor_86e2dd377c869464, []int{4}
} }
func (m *DeleteResponse) XXX_Unmarshal(b []byte) error { func (m *DeleteResponse) XXX_Unmarshal(b []byte) error {
@ -237,130 +235,23 @@ func init() {
proto.RegisterType((*DeleteResponse)(nil), "go.micro.runtime.DeleteResponse") proto.RegisterType((*DeleteResponse)(nil), "go.micro.runtime.DeleteResponse")
} }
func init() { func init() { proto.RegisterFile("runtime.proto", fileDescriptor_86e2dd377c869464) }
proto.RegisterFile("micro/go-micro/runtime/proto/runtime.proto", fileDescriptor_efcf18966add108e)
} var fileDescriptor_86e2dd377c869464 = []byte{
// 229 bytes of a gzipped FileDescriptorProto
var fileDescriptor_efcf18966add108e = []byte{ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x91, 0xbf, 0x4e, 0x86, 0x30,
// 240 bytes of a gzipped FileDescriptorProto 0x14, 0xc5, 0x41, 0x08, 0xc4, 0x6b, 0x30, 0xa4, 0x83, 0xa9, 0x2e, 0x92, 0x4e, 0x4e, 0x1d, 0xe0,
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x91, 0x41, 0x4b, 0xc4, 0x30, 0x11, 0x64, 0x75, 0xa9, 0xb3, 0x03, 0x36, 0x37, 0x4a, 0x22, 0x14, 0xdb, 0x62, 0x7c, 0x23, 0x5f,
0x14, 0x84, 0xb7, 0xba, 0xb4, 0xf8, 0x44, 0x59, 0x72, 0x90, 0xe8, 0xc5, 0x25, 0x27, 0x11, 0xcc, 0xd3, 0xf4, 0x0f, 0x03, 0xca, 0x37, 0x7d, 0xdb, 0xe9, 0xc9, 0xc9, 0xef, 0x9c, 0x9b, 0x42, 0xa5,
0x42, 0xfb, 0x13, 0xec, 0xd5, 0x4b, 0x3c, 0x7b, 0xa8, 0xe1, 0x51, 0x0b, 0xb6, 0xa9, 0x49, 0x2a, 0xd7, 0xd9, 0x8e, 0x13, 0xf2, 0x45, 0x2b, 0xab, 0x48, 0xfd, 0xa6, 0xf8, 0x34, 0x4a, 0xad, 0x78,
0xfe, 0x23, 0xff, 0xa6, 0x24, 0x2f, 0x15, 0xaa, 0xf5, 0xe4, 0x6d, 0xde, 0x30, 0x7c, 0x33, 0x21, 0xf4, 0xd9, 0x0b, 0x94, 0xcf, 0xa8, 0xbf, 0x46, 0x89, 0x84, 0x40, 0x3e, 0x0f, 0x13, 0xd2, 0xb4,
0x70, 0xdb, 0x77, 0xda, 0x9a, 0x43, 0x6b, 0xee, 0x48, 0xd8, 0x69, 0xf0, 0x5d, 0x8f, 0x87, 0xd1, 0x49, 0x1f, 0x2e, 0x85, 0xd7, 0xe4, 0x06, 0x0a, 0xa3, 0x56, 0x2d, 0x91, 0x5e, 0x78, 0x37, 0xbe,
0x1a, 0xff, 0x7d, 0xc9, 0x78, 0xb1, 0x5d, 0x6b, 0x64, 0x4c, 0xc9, 0xe4, 0x8b, 0x27, 0x28, 0x1e, 0x5c, 0x76, 0x19, 0xec, 0x3b, 0xcd, 0x42, 0xd6, 0x69, 0xe7, 0xe1, 0x37, 0x4a, 0x9a, 0x37, 0x99,
0xd1, 0xbe, 0x77, 0x1a, 0x19, 0x83, 0xed, 0xd0, 0xf4, 0xc8, 0xb3, 0x7d, 0x76, 0x73, 0xa2, 0xa2, 0xf3, 0x9c, 0x66, 0x3d, 0x54, 0x8f, 0x1a, 0x07, 0x8b, 0x02, 0x3f, 0x57, 0x34, 0x96, 0x74, 0x50,
0x66, 0x17, 0x90, 0x3b, 0x33, 0x59, 0x8d, 0xfc, 0x28, 0xba, 0xe9, 0x0a, 0xd9, 0xb1, 0xf1, 0x2f, 0x9a, 0xd0, 0xe7, 0x7b, 0xae, 0xda, 0x5b, 0xfe, 0x77, 0x13, 0x8f, 0x83, 0xc4, 0x96, 0x64, 0x35,
0xfc, 0x98, 0xb2, 0x41, 0x07, 0x0f, 0x3f, 0x50, 0xf3, 0x2d, 0x79, 0x41, 0x8b, 0x1a, 0xce, 0xee, 0x5c, 0x6f, 0x14, 0xb3, 0xa8, 0xd9, 0xa0, 0xe3, 0xf6, 0xf8, 0x81, 0xe7, 0x73, 0x37, 0x4a, 0xe0,
0x2d, 0x36, 0x1e, 0x15, 0xbe, 0x4d, 0xe8, 0x3c, 0xab, 0xa0, 0x70, 0xd4, 0x17, 0x7b, 0x4e, 0xcb, 0xb6, 0x3f, 0x29, 0x94, 0x22, 0xc4, 0xc9, 0x13, 0x14, 0xa1, 0x95, 0xdc, 0xff, 0x67, 0xed, 0xae,
0x4b, 0xf9, 0x73, 0x93, 0x4c, 0x83, 0xd4, 0x9c, 0x14, 0x3b, 0x38, 0x9f, 0x29, 0x6e, 0x34, 0x83, 0xba, 0x6b, 0x4e, 0x07, 0xe2, 0xe0, 0xc4, 0xe1, 0x42, 0xd9, 0x11, 0x6e, 0x77, 0xcc, 0x11, 0x6e,
0xc3, 0xc0, 0xad, 0xf1, 0x15, 0xff, 0xcf, 0x9d, 0x29, 0xc4, 0x2d, 0x3f, 0x33, 0x28, 0x14, 0xc5, 0xbf, 0x93, 0x25, 0xaf, 0x85, 0xff, 0xd1, 0xee, 0x37, 0x00, 0x00, 0xff, 0xff, 0x99, 0xc5, 0x97,
0xd9, 0x03, 0xe4, 0xd4, 0xca, 0xae, 0x7f, 0xb3, 0x16, 0xaf, 0xba, 0xda, 0xff, 0x1d, 0x48, 0x83, 0x12, 0xe2, 0x01, 0x00, 0x00,
0x37, 0x01, 0x47, 0x65, 0x6b, 0xb8, 0xc5, 0x63, 0xd6, 0x70, 0xcb, 0x9d, 0x62, 0xf3, 0x9c, 0xc7,
0x1f, 0xad, 0xbe, 0x02, 0x00, 0x00, 0xff, 0xff, 0x9a, 0xb6, 0x5a, 0xe7, 0xff, 0x01, 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.
var _ context.Context
var _ grpc.ClientConn
// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
const _ = grpc.SupportPackageIsVersion4
// RuntimeClient is the client API for Runtime service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
type RuntimeClient interface {
Create(ctx context.Context, in *CreateRequest, opts ...grpc.CallOption) (*CreateResponse, error)
Delete(ctx context.Context, in *DeleteRequest, opts ...grpc.CallOption) (*DeleteResponse, error)
}
type runtimeClient struct {
cc *grpc.ClientConn
}
func NewRuntimeClient(cc *grpc.ClientConn) RuntimeClient {
return &runtimeClient{cc}
}
func (c *runtimeClient) Create(ctx context.Context, in *CreateRequest, opts ...grpc.CallOption) (*CreateResponse, error) {
out := new(CreateResponse)
err := c.cc.Invoke(ctx, "/go.micro.runtime.Runtime/Create", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *runtimeClient) Delete(ctx context.Context, in *DeleteRequest, opts ...grpc.CallOption) (*DeleteResponse, error) {
out := new(DeleteResponse)
err := c.cc.Invoke(ctx, "/go.micro.runtime.Runtime/Delete", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// RuntimeServer is the server API for Runtime service.
type RuntimeServer interface {
Create(context.Context, *CreateRequest) (*CreateResponse, error)
Delete(context.Context, *DeleteRequest) (*DeleteResponse, error)
}
func RegisterRuntimeServer(s *grpc.Server, srv RuntimeServer) {
s.RegisterService(&_Runtime_serviceDesc, srv)
}
func _Runtime_Create_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(CreateRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(RuntimeServer).Create(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/go.micro.runtime.Runtime/Create",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(RuntimeServer).Create(ctx, req.(*CreateRequest))
}
return interceptor(ctx, in, info, handler)
}
func _Runtime_Delete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(DeleteRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(RuntimeServer).Delete(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/go.micro.runtime.Runtime/Delete",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(RuntimeServer).Delete(ctx, req.(*DeleteRequest))
}
return interceptor(ctx, in, info, handler)
}
var _Runtime_serviceDesc = grpc.ServiceDesc{
ServiceName: "go.micro.runtime.Runtime",
HandlerType: (*RuntimeServer)(nil),
Methods: []grpc.MethodDesc{
{
MethodName: "Create",
Handler: _Runtime_Create_Handler,
},
{
MethodName: "Delete",
Handler: _Runtime_Delete_Handler,
},
},
Streams: []grpc.StreamDesc{},
Metadata: "micro/go-micro/runtime/proto/runtime.proto",
} }

View File

@ -15,7 +15,7 @@ message Service {
// local path of the source // local path of the source
string path = 3; string path = 3;
// command to execute // command to execute
string exec = 4; repeated string exec = 4;
} }
message CreateRequest { message CreateRequest {

View File

@ -83,7 +83,7 @@ type Service struct {
// Path to store source // Path to store source
Path string Path string
// Exec command // Exec command
Exec string Exec []string
// Version of the service // Version of the service
Version string Version string
} }

View File

@ -2,7 +2,6 @@ package runtime
import ( import (
"io" "io"
"strings"
"sync" "sync"
"github.com/micro/go-micro/runtime/build" "github.com/micro/go-micro/runtime/build"
@ -37,12 +36,13 @@ func newService(s *Service, c CreateOptions) *service {
var args []string var args []string
if len(s.Exec) > 0 { if len(s.Exec) > 0 {
parts := strings.Split(s.Exec, " ") if len(s.Exec) > 0 {
exec = parts[0] exec = s.Exec[0]
}
args = []string{} args = []string{}
if len(parts) > 1 { if len(s.Exec) > 1 {
args = parts[1:] args = s.Exec[1:]
} }
} else { } else {
// set command // set command

View File

@ -30,7 +30,7 @@ type Service struct {
// local path of the source // local path of the source
Path string `protobuf:"bytes,4,opt,name=path,proto3" json:"path,omitempty"` Path string `protobuf:"bytes,4,opt,name=path,proto3" json:"path,omitempty"`
// command to execute // command to execute
Exec string `protobuf:"bytes,5,opt,name=exec,proto3" json:"exec,omitempty"` Exec []string `protobuf:"bytes,5,rep,name=exec,proto3" json:"exec,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"` XXX_sizecache int32 `json:"-"`
@ -89,11 +89,11 @@ func (m *Service) GetPath() string {
return "" return ""
} }
func (m *Service) GetExec() string { func (m *Service) GetExec() []string {
if m != nil { if m != nil {
return m.Exec return m.Exec
} }
return "" return nil
} }
type CreateOptions struct { type CreateOptions struct {
@ -597,22 +597,22 @@ var fileDescriptor_86e2dd377c869464 = []byte{
0x25, 0x12, 0x02, 0xb3, 0xa6, 0xa8, 0x91, 0x4e, 0x96, 0x93, 0x37, 0x8f, 0x72, 0xfd, 0x26, 0x14, 0x25, 0x12, 0x02, 0xb3, 0xa6, 0xa8, 0x91, 0x4e, 0x96, 0x93, 0x37, 0x8f, 0x72, 0xfd, 0x26, 0x14,
0xa2, 0x03, 0x76, 0xa2, 0xe2, 0x0d, 0x9d, 0xea, 0xb6, 0x2b, 0xc9, 0x53, 0x08, 0x05, 0xef, 0xbb, 0xa2, 0x03, 0x76, 0xa2, 0xe2, 0x0d, 0x9d, 0xea, 0xb6, 0x2b, 0xc9, 0x53, 0x08, 0x05, 0xef, 0xbb,
0x12, 0x69, 0xa0, 0x07, 0xb6, 0x52, 0x28, 0x6d, 0x21, 0x7f, 0xd0, 0x99, 0x41, 0x51, 0x6f, 0xd5, 0x12, 0x69, 0xa0, 0x07, 0xb6, 0x52, 0x28, 0x6d, 0x21, 0x7f, 0xd0, 0x99, 0x41, 0x51, 0x6f, 0xd5,
0xc3, 0x3f, 0x58, 0xd2, 0x07, 0xa6, 0xa7, 0xde, 0x6c, 0x07, 0xc9, 0x87, 0x0e, 0x0b, 0x89, 0x9f, 0xc3, 0x3f, 0x58, 0xd2, 0x07, 0xcb, 0x40, 0xf5, 0xd4, 0x9b, 0xed, 0x20, 0xf9, 0xd0, 0x61, 0x21,
0x5b, 0x59, 0xf1, 0x46, 0xa8, 0x53, 0x25, 0xaf, 0xeb, 0xa2, 0xd9, 0xd3, 0xc9, 0x32, 0x50, 0xa7, 0xf1, 0x73, 0x2b, 0x2b, 0xde, 0x08, 0x75, 0xaa, 0xe4, 0x75, 0x5d, 0x34, 0x7b, 0x3a, 0xd1, 0x7b,
0x6c, 0x49, 0xe6, 0x10, 0x60, 0x73, 0xa0, 0x53, 0xdd, 0x55, 0x4f, 0x75, 0x9c, 0xf7, 0xb2, 0xed, 0xae, 0x24, 0x73, 0x08, 0xb0, 0x39, 0xd0, 0xa9, 0xee, 0xaa, 0xa7, 0x3a, 0xce, 0x7b, 0xd9, 0xf6,
0xa5, 0x3b, 0x6e, 0x2a, 0xf6, 0xd7, 0x81, 0xe6, 0xf8, 0xab, 0x47, 0x21, 0xc9, 0x1a, 0x22, 0x61, 0xd2, 0x1d, 0x37, 0x15, 0xfb, 0xeb, 0x40, 0x73, 0xfc, 0xd5, 0xa3, 0x90, 0x64, 0x0d, 0x91, 0x30,
0xe4, 0x69, 0x59, 0xf1, 0xea, 0x59, 0x3a, 0xb4, 0x20, 0xb5, 0xfa, 0x73, 0xb7, 0x49, 0xde, 0x43, 0xf2, 0xb4, 0xac, 0x78, 0xf5, 0x2c, 0x1d, 0x5a, 0x90, 0x5a, 0xfd, 0xb9, 0xdb, 0x24, 0xef, 0x21,
0xc4, 0x0d, 0x29, 0x2d, 0x3a, 0x5e, 0xbd, 0xba, 0xfe, 0xd1, 0x05, 0xf7, 0xdc, 0xed, 0xb3, 0x39, 0xe2, 0x86, 0x94, 0x16, 0x1d, 0xaf, 0x5e, 0x5d, 0xff, 0xe8, 0x82, 0x7b, 0xee, 0xf6, 0xd9, 0x1c,
0x3c, 0x71, 0x04, 0x44, 0xcb, 0x1b, 0x81, 0xec, 0x35, 0xc0, 0x06, 0xe5, 0x99, 0x48, 0xbf, 0x9f, 0x9e, 0x38, 0x02, 0xa2, 0xe5, 0x8d, 0x40, 0xf6, 0x1a, 0x60, 0x83, 0xf2, 0x4c, 0xa4, 0xdf, 0x4f,
0xec, 0xab, 0xde, 0x73, 0xbc, 0x7d, 0x59, 0xbc, 0x1b, 0xd2, 0x7a, 0x7e, 0x4d, 0xeb, 0x74, 0xea, 0xf6, 0x55, 0xef, 0x39, 0xde, 0xbe, 0x2c, 0xde, 0x0d, 0x69, 0x3d, 0xbf, 0xa6, 0x75, 0x3a, 0x75,
0xc4, 0x29, 0x83, 0x58, 0x23, 0x1b, 0x42, 0xe4, 0x2d, 0x3c, 0xb4, 0x42, 0x85, 0x36, 0xfa, 0x5e, 0xe2, 0x94, 0x41, 0xac, 0x91, 0x0d, 0x21, 0xf2, 0x16, 0x1e, 0x5a, 0xa1, 0x42, 0x1b, 0x7d, 0xaf,
0x4f, 0x8e, 0xab, 0x2c, 0x83, 0x24, 0xc3, 0x9f, 0x78, 0x9b, 0xb5, 0xca, 0x1f, 0x87, 0x62, 0xfd, 0x27, 0xc7, 0x55, 0x96, 0x41, 0x92, 0xe1, 0x4f, 0xbc, 0xcd, 0x5a, 0xe5, 0x8f, 0x43, 0xb1, 0xfe,
0xc9, 0x20, 0xf9, 0xd2, 0xee, 0x8b, 0xdb, 0x71, 0x1d, 0x8a, 0xc5, 0x4d, 0x20, 0xfe, 0x54, 0x09, 0x64, 0x90, 0x7c, 0x69, 0xf7, 0xc5, 0xed, 0xb8, 0x0e, 0xc5, 0xe2, 0x26, 0x10, 0x7f, 0xaa, 0x84,
0x67, 0x28, 0xfb, 0x08, 0x8f, 0x4d, 0x79, 0x93, 0x0b, 0xab, 0x7f, 0x01, 0x44, 0xb9, 0x99, 0x92, 0x33, 0x94, 0x7d, 0x84, 0xc7, 0xa6, 0xbc, 0xc9, 0x85, 0xd5, 0xbf, 0x00, 0xa2, 0xdc, 0x4c, 0xc9,
0x2d, 0x84, 0x26, 0x6b, 0x32, 0xfa, 0xff, 0xb0, 0xd7, 0x17, 0xcb, 0xf1, 0x05, 0x4b, 0xf7, 0x8e, 0x16, 0x42, 0x93, 0x35, 0x19, 0xfd, 0x7f, 0xd8, 0xeb, 0x8b, 0xe5, 0xf8, 0x82, 0xa5, 0x7b, 0x47,
0x64, 0x10, 0x6c, 0x50, 0x12, 0x7f, 0xa8, 0x0e, 0xe8, 0xc5, 0xc8, 0xf4, 0x88, 0xb2, 0x85, 0xd0, 0x32, 0x08, 0x36, 0x28, 0x89, 0x3f, 0x54, 0x07, 0xf4, 0x62, 0x64, 0x7a, 0x44, 0xd9, 0x42, 0x68,
0x18, 0xec, 0x23, 0x75, 0x11, 0xa0, 0x8f, 0xd4, 0x20, 0x1b, 0x0d, 0x67, 0x7c, 0xf5, 0xc1, 0x5d, 0x0c, 0xf6, 0x91, 0xba, 0x08, 0xd0, 0x47, 0x6a, 0x90, 0x8d, 0x86, 0x33, 0xbe, 0xfa, 0xe0, 0x2e,
0xe4, 0xe6, 0x83, 0x1b, 0x44, 0x72, 0x47, 0x36, 0x30, 0x53, 0x29, 0x10, 0x8f, 0x8c, 0xb3, 0xb0, 0x72, 0xf3, 0xc1, 0x0d, 0x22, 0xb9, 0x23, 0x1b, 0x98, 0xa9, 0x14, 0x88, 0x47, 0xc6, 0x59, 0x58,
0x16, 0x2f, 0xc7, 0xc6, 0x0e, 0xe8, 0x5b, 0xa8, 0xbf, 0x67, 0xeb, 0xff, 0x01, 0x00, 0x00, 0xff, 0x8b, 0x97, 0x63, 0x63, 0x07, 0xf4, 0x2d, 0xd4, 0xdf, 0xb3, 0xf5, 0xff, 0x00, 0x00, 0x00, 0xff,
0xff, 0x19, 0x21, 0xd3, 0xfb, 0xe0, 0x04, 0x00, 0x00, 0xff, 0x2f, 0x63, 0x84, 0x1c, 0xe0, 0x04, 0x00, 0x00,
} }

View File

@ -20,7 +20,7 @@ message Service {
// local path of the source // local path of the source
string path = 4; string path = 4;
// command to execute // command to execute
string exec = 5; repeated string exec = 5;
} }
message CreateOptions { message CreateOptions {