diff --git a/file.marshal.pb.go b/file.marshal.pb.go new file mode 100644 index 0000000..d84d35b --- /dev/null +++ b/file.marshal.pb.go @@ -0,0 +1,93 @@ +// Code generated by go.wit.com/apps/autogenpb DO NOT EDIT. +// This file was autogenerated with autogenpb v0.5.3 2025-09-13_13:40:21_UTC +// go install go.wit.com/apps/autogenpb@latest +// +// define which structs (messages) you want to use in the .proto file +// Then sort.pb.go and marshal.pb.go files are autogenerated +// +// autogenpb uses it and has an example .proto file with instructions +// + +package main + +import ( + "google.golang.org/protobuf/encoding/protojson" + "google.golang.org/protobuf/encoding/prototext" + "google.golang.org/protobuf/proto" +) + +// human readable JSON +func (v *Files) FormatJSON() string { + return protojson.Format(v) +} + +// marshal json +func (v *Files) MarshalJSON() ([]byte, error) { + return protojson.Marshal(v) +} + +// unmarshal json +func (v *Files) UnmarshalJSON(data []byte) error { + return protojson.Unmarshal(data, v) +} + +// apparently this isn't stable, but it's awesomely better +// https://protobuf.dev/reference/go/faq/#unstable-text +// it's brilliant for config files! +func (v *Files) FormatTEXT() string { + v.fixUuid() + return prototext.Format(v) +} + +// unmarshalTEXT. This reads the .text config file back in after the user edits it +func (v *Files) UnmarshalTEXT(data []byte) error { + return prototext.Unmarshal(data, v) +} + +// marshal to wire. This is called winning. +func (v *Files) Marshal() ([]byte, error) { + v.fixUuid() + return proto.Marshal(v) +} + +// unmarshal from wire. You have won. +func (v *Files) Unmarshal(data []byte) error { + return proto.Unmarshal(data, v) +} + +// human readable JSON +func (v *Identify) FormatJSON() string { + return protojson.Format(v) +} + +// marshal json +func (v *Identify) MarshalJSON() ([]byte, error) { + return protojson.Marshal(v) +} + +// unmarshal json +func (v *Identify) UnmarshalJSON(data []byte) error { + return protojson.Unmarshal(data, v) +} + +// apparently this isn't stable, but it's awesomely better +// https://protobuf.dev/reference/go/faq/#unstable-text +// it's brilliant for config files! +func (v *Identify) FormatTEXT() string { + return prototext.Format(v) +} + +// unmarshalTEXT. This reads the .text config file back in after the user edits it +func (v *Identify) UnmarshalTEXT(data []byte) error { + return prototext.Unmarshal(data, v) +} + +// marshal to wire. This is called winning. +func (v *Identify) Marshal() ([]byte, error) { + return proto.Marshal(v) +} + +// unmarshal from wire. You have won. +func (v *Identify) Unmarshal(data []byte) error { + return proto.Unmarshal(data, v) +} diff --git a/file.pb.go b/file.pb.go new file mode 100644 index 0000000..37f1ac6 --- /dev/null +++ b/file.pb.go @@ -0,0 +1,1222 @@ +// Code modified by go.wit.com/apps/autogenpb DO NOT EDIT. +// +// user defined Mutex locks were auto added +// +// autogenpb version & build time: v0.5.3 2025-09-13_13:40:21_UTC +// autogenpb auto generates Sort(), Unique() and Marshal() functions +// go install go.wit.com/apps/autogenpb@latest + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.33.0 +// protoc v3.21.12 +// source: file.proto + +// Look at "example/fruit.proto" not this file + +// this file is actually used by autogenpb + +// here are some docs, but probably it's just easier to run +// autogenpb on this file and see what gets autogenerated +// in this directory. All autogenerated files are named *.pb.go + +// the 'uuid' standard at the end is an experiment +// establish a way to identify arbitrary .pb files + +// You can generate Marshal & Unmarshal for any struct (message) you want +// You can generate SortBy and Append functions ONLY FOR 'repeated ' +// Also, those structs must be defined in the same file +// Additionally, you must use `autogenpb:mutex` on the parent struct. +// The autogenerated code requires a RW mutex and autogenpb will insert it into the struct + +package main // autogenpb changed the package name + +import ( + reflect "reflect" + sync "sync" + + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type FormatMsg_Type int32 + +const ( + FormatMsg_MESSAGE FormatMsg_Type = 0 + FormatMsg_ENUM FormatMsg_Type = 1 + FormatMsg_ONEOF FormatMsg_Type = 2 + FormatMsg_VAR FormatMsg_Type = 3 +) + +// Enum value maps for FormatMsg_Type. +var ( + FormatMsg_Type_name = map[int32]string{ + 0: "MESSAGE", + 1: "ENUM", + 2: "ONEOF", + 3: "VAR", + } + FormatMsg_Type_value = map[string]int32{ + "MESSAGE": 0, + "ENUM": 1, + "ONEOF": 2, + "VAR": 3, + } +) + +func (x FormatMsg_Type) Enum() *FormatMsg_Type { + p := new(FormatMsg_Type) + *p = x + return p +} + +func (x FormatMsg_Type) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (FormatMsg_Type) Descriptor() protoreflect.EnumDescriptor { + return file_file_proto_enumTypes[0].Descriptor() +} + +func (FormatMsg_Type) Type() protoreflect.EnumType { + return &file_file_proto_enumTypes[0] +} + +func (x FormatMsg_Type) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use FormatMsg_Type.Descriptor instead. +func (FormatMsg_Type) EnumDescriptor() ([]byte, []int) { + return file_file_proto_rawDescGZIP(), []int{3, 0} +} + +type MsgVar struct { + sync.RWMutex // auto-added by go.wit.com/apps/autogenpb + + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + VarName string `protobuf:"bytes,1,opt,name=varName,proto3" json:"varName,omitempty"` // the variable name + VarType string `protobuf:"bytes,2,opt,name=varType,proto3" json:"varType,omitempty"` // the variable type + IsRepeated bool `protobuf:"varint,3,opt,name=isRepeated,proto3" json:"isRepeated,omitempty"` // does the variable repeate + HasSort bool `protobuf:"varint,4,opt,name=hasSort,proto3" json:"hasSort,omitempty"` // marked with sort + HasUnique bool `protobuf:"varint,5,opt,name=hasUnique,proto3" json:"hasUnique,omitempty"` // marked with unique +} + +func (x *MsgVar) Reset() { + *x = MsgVar{} + if protoimpl.UnsafeEnabled { + mi := &file_file_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgVar) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgVar) ProtoMessage() {} + +func (x *MsgVar) ProtoReflect() protoreflect.Message { + mi := &file_file_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MsgVar.ProtoReflect.Descriptor instead. +func (*MsgVar) Descriptor() ([]byte, []int) { + return file_file_proto_rawDescGZIP(), []int{0} +} + +func (x *MsgVar) GetVarName() string { + if x != nil { + return x.VarName + } + return "" +} + +func (x *MsgVar) GetVarType() string { + if x != nil { + return x.VarType + } + return "" +} + +func (x *MsgVar) GetIsRepeated() bool { + if x != nil { + return x.IsRepeated + } + return false +} + +func (x *MsgVar) GetHasSort() bool { + if x != nil { + return x.HasSort + } + return false +} + +func (x *MsgVar) GetHasUnique() bool { + if x != nil { + return x.HasUnique + } + return false +} + +type MsgName struct { + sync.RWMutex // auto-added by go.wit.com/apps/autogenpb + + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // the name of the message aka struct. for this example: "Shelf" + Lockname string `protobuf:"bytes,2,opt,name=lockname,proto3" json:"lockname,omitempty"` // name of the lockfile. ends in Mu + DoMarshal bool `protobuf:"varint,3,opt,name=doMarshal,proto3" json:"doMarshal,omitempty"` // if msg struct should have Marshal & Unmarshal functions + DoMutex bool `protobuf:"varint,4,opt,name=doMutex,proto3" json:"doMutex,omitempty"` // true if a mutex is needed for the message struct + DoProtocMutex bool `protobuf:"varint,5,opt,name=doProtocMutex,proto3" json:"doProtocMutex,omitempty"` // an experiment to insert a mutex into the protoc generated msg struct (bad idea?) + MutexFound bool `protobuf:"varint,6,opt,name=mutexFound,proto3" json:"mutexFound,omitempty"` // true if the mutex was added to the protoc pb.go file + Sort []string `protobuf:"bytes,7,rep,name=sort,proto3" json:"sort,omitempty"` // keys to sort on + Unique []string `protobuf:"bytes,8,rep,name=unique,proto3" json:"unique,omitempty"` // if the fields should have AppendUnique() functions + Vars []*MsgVar `protobuf:"bytes,9,rep,name=vars,proto3" json:"vars,omitempty"` // store all the vars in the message + NeedIter bool `protobuf:"varint,10,opt,name=needIter,proto3" json:"needIter,omitempty"` // true if the sort iterator has not been generated yet + NeedAll bool `protobuf:"varint,11,opt,name=needAll,proto3" json:"needAll,omitempty"` // true if the sort iterator has not been generated yet + NoMutex bool `protobuf:"varint,12,opt,name=noMutex,proto3" json:"noMutex,omitempty"` // only use the global mutex + DoGui bool `protobuf:"varint,13,opt,name=doGui,proto3" json:"doGui,omitempty"` // if a gui.pb.go file should be created + GuiVarName string `protobuf:"bytes,14,opt,name=guiVarName,proto3" json:"guiVarName,omitempty"` // the name of the variable to use + LocalMsgs *MsgName `protobuf:"bytes,15,opt,name=localMsgs,proto3" json:"localMsgs,omitempty"` // messages can define other local only messages + DoHTTP bool `protobuf:"varint,16,opt,name=doHTTP,proto3" json:"doHTTP,omitempty"` // make http.pb.go files +} + +func (x *MsgName) Reset() { + *x = MsgName{} + if protoimpl.UnsafeEnabled { + mi := &file_file_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MsgName) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MsgName) ProtoMessage() {} + +func (x *MsgName) ProtoReflect() protoreflect.Message { + mi := &file_file_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MsgName.ProtoReflect.Descriptor instead. +func (*MsgName) Descriptor() ([]byte, []int) { + return file_file_proto_rawDescGZIP(), []int{1} +} + +func (x *MsgName) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *MsgName) GetLockname() string { + if x != nil { + return x.Lockname + } + return "" +} + +func (x *MsgName) GetDoMarshal() bool { + if x != nil { + return x.DoMarshal + } + return false +} + +func (x *MsgName) GetDoMutex() bool { + if x != nil { + return x.DoMutex + } + return false +} + +func (x *MsgName) GetDoProtocMutex() bool { + if x != nil { + return x.DoProtocMutex + } + return false +} + +func (x *MsgName) GetMutexFound() bool { + if x != nil { + return x.MutexFound + } + return false +} + +func (x *MsgName) GetSort() []string { + if x != nil { + return x.Sort + } + return nil +} + +func (x *MsgName) GetUnique() []string { + if x != nil { + return x.Unique + } + return nil +} + +func (x *MsgName) GetVars() []*MsgVar { + if x != nil { + return x.Vars + } + return nil +} + +func (x *MsgName) GetNeedIter() bool { + if x != nil { + return x.NeedIter + } + return false +} + +func (x *MsgName) GetNeedAll() bool { + if x != nil { + return x.NeedAll + } + return false +} + +func (x *MsgName) GetNoMutex() bool { + if x != nil { + return x.NoMutex + } + return false +} + +func (x *MsgName) GetDoGui() bool { + if x != nil { + return x.DoGui + } + return false +} + +func (x *MsgName) GetGuiVarName() string { + if x != nil { + return x.GuiVarName + } + return "" +} + +func (x *MsgName) GetLocalMsgs() *MsgName { + if x != nil { + return x.LocalMsgs + } + return nil +} + +func (x *MsgName) GetDoHTTP() bool { + if x != nil { + return x.DoHTTP + } + return false +} + +type Sort struct { + sync.RWMutex // auto-added by go.wit.com/apps/autogenpb + + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + MsgName string `protobuf:"bytes,1,opt,name=msgName,proto3" json:"msgName,omitempty"` // `autogenpb:unique` File + VarType string `protobuf:"bytes,2,opt,name=varType,proto3" json:"varType,omitempty"` // `autogenpb:unique` MsgName + VarName string `protobuf:"bytes,3,opt,name=varName,proto3" json:"varName,omitempty"` // `autogenpb:unique` msgNames, sortNames + Lockname string `protobuf:"bytes,4,opt,name=lockname,proto3" json:"lockname,omitempty"` // + NeedAll bool `protobuf:"varint,5,opt,name=needAll,proto3" json:"needAll,omitempty"` // +} + +func (x *Sort) Reset() { + *x = Sort{} + if protoimpl.UnsafeEnabled { + mi := &file_file_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Sort) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Sort) ProtoMessage() {} + +func (x *Sort) ProtoReflect() protoreflect.Message { + mi := &file_file_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Sort.ProtoReflect.Descriptor instead. +func (*Sort) Descriptor() ([]byte, []int) { + return file_file_proto_rawDescGZIP(), []int{2} +} + +func (x *Sort) GetMsgName() string { + if x != nil { + return x.MsgName + } + return "" +} + +func (x *Sort) GetVarType() string { + if x != nil { + return x.VarType + } + return "" +} + +func (x *Sort) GetVarName() string { + if x != nil { + return x.VarName + } + return "" +} + +func (x *Sort) GetLockname() string { + if x != nil { + return x.Lockname + } + return "" +} + +func (x *Sort) GetNeedAll() bool { + if x != nil { + return x.NeedAll + } + return false +} + +// used to auto-format protobuf files +type FormatMsg struct { + sync.RWMutex // auto-added by go.wit.com/apps/autogenpb + + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Depth int64 `protobuf:"varint,1,opt,name=depth,proto3" json:"depth,omitempty"` // used to indent output + MaxVarname int64 `protobuf:"varint,2,opt,name=maxVarname,proto3" json:"maxVarname,omitempty"` // max string length of var names + MaxVartype int64 `protobuf:"varint,3,opt,name=maxVartype,proto3" json:"maxVartype,omitempty"` // max string length of var types + Header string `protobuf:"bytes,4,opt,name=header,proto3" json:"header,omitempty"` // the 'message {','enum {', etc line + Notes []string `protobuf:"bytes,5,rep,name=notes,proto3" json:"notes,omitempty"` // unknown lines or comments + Msgs []*FormatMsg `protobuf:"bytes,6,rep,name=msgs,proto3" json:"msgs,omitempty"` // locally defined messages and enums + Lines []string `protobuf:"bytes,7,rep,name=lines,proto3" json:"lines,omitempty"` // the variables + Footer string `protobuf:"bytes,8,opt,name=footer,proto3" json:"footer,omitempty"` // the '}' line + Type FormatMsg_Type `protobuf:"varint,9,opt,name=type,proto3,enum=main.FormatMsg_Type" json:"type,omitempty"` // yep. type. yep. that's what this is for + PadAfter bool `protobuf:"varint,10,opt,name=padAfter,proto3" json:"padAfter,omitempty"` + IsEmpty bool `protobuf:"varint,11,opt,name=isEmpty,proto3" json:"isEmpty,omitempty"` // true when things like: message blah {} +} + +func (x *FormatMsg) Reset() { + *x = FormatMsg{} + if protoimpl.UnsafeEnabled { + mi := &file_file_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FormatMsg) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FormatMsg) ProtoMessage() {} + +func (x *FormatMsg) ProtoReflect() protoreflect.Message { + mi := &file_file_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FormatMsg.ProtoReflect.Descriptor instead. +func (*FormatMsg) Descriptor() ([]byte, []int) { + return file_file_proto_rawDescGZIP(), []int{3} +} + +func (x *FormatMsg) GetDepth() int64 { + if x != nil { + return x.Depth + } + return 0 +} + +func (x *FormatMsg) GetMaxVarname() int64 { + if x != nil { + return x.MaxVarname + } + return 0 +} + +func (x *FormatMsg) GetMaxVartype() int64 { + if x != nil { + return x.MaxVartype + } + return 0 +} + +func (x *FormatMsg) GetHeader() string { + if x != nil { + return x.Header + } + return "" +} + +func (x *FormatMsg) GetNotes() []string { + if x != nil { + return x.Notes + } + return nil +} + +func (x *FormatMsg) GetMsgs() []*FormatMsg { + if x != nil { + return x.Msgs + } + return nil +} + +func (x *FormatMsg) GetLines() []string { + if x != nil { + return x.Lines + } + return nil +} + +func (x *FormatMsg) GetFooter() string { + if x != nil { + return x.Footer + } + return "" +} + +func (x *FormatMsg) GetType() FormatMsg_Type { + if x != nil { + return x.Type + } + return FormatMsg_MESSAGE +} + +func (x *FormatMsg) GetPadAfter() bool { + if x != nil { + return x.PadAfter + } + return false +} + +func (x *FormatMsg) GetIsEmpty() bool { + if x != nil { + return x.IsEmpty + } + return false +} + +type Find struct { + sync.RWMutex // auto-added by go.wit.com/apps/autogenpb + + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` // `autogenpb:unique` File + VarType string `protobuf:"bytes,2,opt,name=varType,proto3" json:"varType,omitempty"` // `autogenpb:unique` MsgName + VarName string `protobuf:"bytes,3,opt,name=varName,proto3" json:"varName,omitempty"` // `autogenpb:unique` msgNames, sortNames + NeedAll bool `protobuf:"varint,4,opt,name=needAll,proto3" json:"needAll,omitempty"` // +} + +func (x *Find) Reset() { + *x = Find{} + if protoimpl.UnsafeEnabled { + mi := &file_file_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Find) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Find) ProtoMessage() {} + +func (x *Find) ProtoReflect() protoreflect.Message { + mi := &file_file_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Find.ProtoReflect.Descriptor instead. +func (*Find) Descriptor() ([]byte, []int) { + return file_file_proto_rawDescGZIP(), []int{4} +} + +func (x *Find) GetParent() string { + if x != nil { + return x.Parent + } + return "" +} + +func (x *Find) GetVarType() string { + if x != nil { + return x.VarType + } + return "" +} + +func (x *Find) GetVarName() string { + if x != nil { + return x.VarName + } + return "" +} + +func (x *Find) GetNeedAll() bool { + if x != nil { + return x.NeedAll + } + return false +} + +type File struct { + sync.RWMutex // auto-added by go.wit.com/apps/autogenpb + + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Package string `protobuf:"bytes,1,opt,name=Package,proto3" json:"Package,omitempty"` // whatever the package name is at the top of the .go file + Filename string `protobuf:"bytes,2,opt,name=filename,proto3" json:"filename,omitempty"` // yellow.proto + Pbfilename string `protobuf:"bytes,3,opt,name=pbfilename,proto3" json:"pbfilename,omitempty"` // yellow.pb.go + Filebase string `protobuf:"bytes,4,opt,name=filebase,proto3" json:"filebase,omitempty"` // yellow + Uuid string `protobuf:"bytes,5,opt,name=uuid,proto3" json:"uuid,omitempty"` // the uuid to use in a func NewMsgName() + Version string `protobuf:"bytes,6,opt,name=version,proto3" json:"version,omitempty"` // the version to use in a func NewMsgName() + Bases *MsgName `protobuf:"bytes,7,opt,name=bases,proto3" json:"bases,omitempty"` // the message in "plural" form + Base *MsgName `protobuf:"bytes,8,opt,name=base,proto3" json:"base,omitempty"` // the primary repeated message for the master struct + // every struct in this proto file, this file has: "Apple", "Apples", ... "File", etc... + MsgNames []*MsgName `protobuf:"bytes,9,rep,name=msgNames,proto3" json:"msgNames,omitempty"` + SortNames []*MsgName `protobuf:"bytes,10,rep,name=sortNames,proto3" json:"sortNames,omitempty"` // variables that are repeated can have the standard functions generated (Sort(), etc) + IterMap map[string]string `protobuf:"bytes,11,rep,name=iterMap,proto3" json:"iterMap,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + ToSort []*Sort `protobuf:"bytes,12,rep,name=toSort,proto3" json:"toSort,omitempty"` // variables that are repeated can have the standard functions generated (Sort(), etc) + GoPath string `protobuf:"bytes,13,opt,name=goPath,proto3" json:"goPath,omitempty"` // the version to use in a func NewMsgName() + DoGui bool `protobuf:"varint,14,opt,name=doGui,proto3" json:"doGui,omitempty"` // if a gui.pb.go file should be created + DoHTTP bool `protobuf:"varint,15,opt,name=doHTTP,proto3" json:"doHTTP,omitempty"` // http.pb.go +} + +func (x *File) Reset() { + *x = File{} + if protoimpl.UnsafeEnabled { + mi := &file_file_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *File) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*File) ProtoMessage() {} + +func (x *File) ProtoReflect() protoreflect.Message { + mi := &file_file_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use File.ProtoReflect.Descriptor instead. +func (*File) Descriptor() ([]byte, []int) { + return file_file_proto_rawDescGZIP(), []int{5} +} + +func (x *File) GetPackage() string { + if x != nil { + return x.Package + } + return "" +} + +func (x *File) GetFilename() string { + if x != nil { + return x.Filename + } + return "" +} + +func (x *File) GetPbfilename() string { + if x != nil { + return x.Pbfilename + } + return "" +} + +func (x *File) GetFilebase() string { + if x != nil { + return x.Filebase + } + return "" +} + +func (x *File) GetUuid() string { + if x != nil { + return x.Uuid + } + return "" +} + +func (x *File) GetVersion() string { + if x != nil { + return x.Version + } + return "" +} + +func (x *File) GetBases() *MsgName { + if x != nil { + return x.Bases + } + return nil +} + +func (x *File) GetBase() *MsgName { + if x != nil { + return x.Base + } + return nil +} + +func (x *File) GetMsgNames() []*MsgName { + if x != nil { + return x.MsgNames + } + return nil +} + +func (x *File) GetSortNames() []*MsgName { + if x != nil { + return x.SortNames + } + return nil +} + +func (x *File) GetIterMap() map[string]string { + if x != nil { + return x.IterMap + } + return nil +} + +func (x *File) GetToSort() []*Sort { + if x != nil { + return x.ToSort + } + return nil +} + +func (x *File) GetGoPath() string { + if x != nil { + return x.GoPath + } + return "" +} + +func (x *File) GetDoGui() bool { + if x != nil { + return x.DoGui + } + return false +} + +func (x *File) GetDoHTTP() bool { + if x != nil { + return x.DoHTTP + } + return false +} + +// I know, I know, the whole point of using protobuf +// is so you don't need a uuid or versions because it's +// inherently forward compatable. nonetheless, a simple stubbed out +// trivial and empty protobuf message can marshal and identify all the files +// also, this could be used to modify /usr/bin/file /usr/share/magic to identify the files +// maybe this is already been done and is pointless, but it seems like a good idea +type Files struct { + sync.RWMutex // auto-added by go.wit.com/apps/autogenpb + + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Uuid string `protobuf:"bytes,1,opt,name=uuid,proto3" json:"uuid,omitempty"` // `autogenpb:uuid:6c9ae4dd-648d-4b51-9738-bd59fb8fafd5` + Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` // `autogenpb:version:v0.0.38` + Files []*File `protobuf:"bytes,3,rep,name=Files,proto3" json:"Files,omitempty"` // an array of each .proto file in the working directory +} + +func (x *Files) Reset() { + *x = Files{} + if protoimpl.UnsafeEnabled { + mi := &file_file_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Files) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Files) ProtoMessage() {} + +func (x *Files) ProtoReflect() protoreflect.Message { + mi := &file_file_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Files.ProtoReflect.Descriptor instead. +func (*Files) Descriptor() ([]byte, []int) { + return file_file_proto_rawDescGZIP(), []int{6} +} + +func (x *Files) GetUuid() string { + if x != nil { + return x.Uuid + } + return "" +} + +func (x *Files) GetVersion() string { + if x != nil { + return x.Version + } + return "" +} + +func (x *Files) GetFiles() []*File { + if x != nil { + return x.Files + } + return nil +} + +// this generic message is used by autogen to identify and +// then dump the uuid and version from any arbitrary .pb file +type Identify struct { + sync.RWMutex // auto-added by go.wit.com/apps/autogenpb + + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Uuid string `protobuf:"bytes,1,opt,name=uuid,proto3" json:"uuid,omitempty"` // + Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` // +} + +func (x *Identify) Reset() { + *x = Identify{} + if protoimpl.UnsafeEnabled { + mi := &file_file_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Identify) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Identify) ProtoMessage() {} + +func (x *Identify) ProtoReflect() protoreflect.Message { + mi := &file_file_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Identify.ProtoReflect.Descriptor instead. +func (*Identify) Descriptor() ([]byte, []int) { + return file_file_proto_rawDescGZIP(), []int{7} +} + +func (x *Identify) GetUuid() string { + if x != nil { + return x.Uuid + } + return "" +} + +func (x *Identify) GetVersion() string { + if x != nil { + return x.Version + } + return "" +} + +var File_file_proto protoreflect.FileDescriptor + +var file_file_proto_rawDesc = []byte{ + 0x0a, 0x0a, 0x66, 0x69, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x04, 0x6d, 0x61, + 0x69, 0x6e, 0x22, 0x94, 0x01, 0x0a, 0x06, 0x4d, 0x73, 0x67, 0x56, 0x61, 0x72, 0x12, 0x18, 0x0a, + 0x07, 0x76, 0x61, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x76, 0x61, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x61, 0x72, 0x54, 0x79, + 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x61, 0x72, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x73, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x69, 0x73, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, + 0x64, 0x12, 0x18, 0x0a, 0x07, 0x68, 0x61, 0x73, 0x53, 0x6f, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x07, 0x68, 0x61, 0x73, 0x53, 0x6f, 0x72, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x68, + 0x61, 0x73, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, + 0x68, 0x61, 0x73, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x22, 0xd0, 0x03, 0x0a, 0x07, 0x4d, 0x73, + 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, + 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x63, + 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x6f, 0x4d, 0x61, 0x72, 0x73, 0x68, + 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x64, 0x6f, 0x4d, 0x61, 0x72, 0x73, + 0x68, 0x61, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x6f, 0x4d, 0x75, 0x74, 0x65, 0x78, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x64, 0x6f, 0x4d, 0x75, 0x74, 0x65, 0x78, 0x12, 0x24, 0x0a, + 0x0d, 0x64, 0x6f, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x4d, 0x75, 0x74, 0x65, 0x78, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x64, 0x6f, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x4d, 0x75, + 0x74, 0x65, 0x78, 0x12, 0x1e, 0x0a, 0x0a, 0x6d, 0x75, 0x74, 0x65, 0x78, 0x46, 0x6f, 0x75, 0x6e, + 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x6d, 0x75, 0x74, 0x65, 0x78, 0x46, 0x6f, + 0x75, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x18, 0x07, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x6e, 0x69, 0x71, 0x75, + 0x65, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x12, + 0x20, 0x0a, 0x04, 0x76, 0x61, 0x72, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, + 0x6d, 0x61, 0x69, 0x6e, 0x2e, 0x4d, 0x73, 0x67, 0x56, 0x61, 0x72, 0x52, 0x04, 0x76, 0x61, 0x72, + 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x65, 0x65, 0x64, 0x49, 0x74, 0x65, 0x72, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x08, 0x6e, 0x65, 0x65, 0x64, 0x49, 0x74, 0x65, 0x72, 0x12, 0x18, 0x0a, + 0x07, 0x6e, 0x65, 0x65, 0x64, 0x41, 0x6c, 0x6c, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, + 0x6e, 0x65, 0x65, 0x64, 0x41, 0x6c, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x6f, 0x4d, 0x75, 0x74, + 0x65, 0x78, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x6e, 0x6f, 0x4d, 0x75, 0x74, 0x65, + 0x78, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x6f, 0x47, 0x75, 0x69, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x05, 0x64, 0x6f, 0x47, 0x75, 0x69, 0x12, 0x1e, 0x0a, 0x0a, 0x67, 0x75, 0x69, 0x56, 0x61, + 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x67, 0x75, 0x69, + 0x56, 0x61, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2b, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, + 0x4d, 0x73, 0x67, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x6d, 0x61, 0x69, + 0x6e, 0x2e, 0x4d, 0x73, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, + 0x4d, 0x73, 0x67, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x6f, 0x48, 0x54, 0x54, 0x50, 0x18, 0x10, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x64, 0x6f, 0x48, 0x54, 0x54, 0x50, 0x22, 0x8a, 0x01, 0x0a, + 0x04, 0x53, 0x6f, 0x72, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x73, 0x67, 0x4e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x73, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x18, 0x0a, 0x07, 0x76, 0x61, 0x72, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x76, 0x61, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x61, 0x72, + 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x61, 0x72, 0x4e, + 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x65, 0x64, 0x41, 0x6c, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x07, 0x6e, 0x65, 0x65, 0x64, 0x41, 0x6c, 0x6c, 0x22, 0xf5, 0x02, 0x0a, 0x09, 0x46, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x4d, 0x73, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x65, 0x70, 0x74, 0x68, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x64, 0x65, 0x70, 0x74, 0x68, 0x12, 0x1e, 0x0a, + 0x0a, 0x6d, 0x61, 0x78, 0x56, 0x61, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x56, 0x61, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, + 0x0a, 0x6d, 0x61, 0x78, 0x56, 0x61, 0x72, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x56, 0x61, 0x72, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, + 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x68, + 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x6f, 0x74, 0x65, 0x73, 0x18, 0x05, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x6e, 0x6f, 0x74, 0x65, 0x73, 0x12, 0x23, 0x0a, 0x04, 0x6d, + 0x73, 0x67, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6d, 0x61, 0x69, 0x6e, + 0x2e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x4d, 0x73, 0x67, 0x52, 0x04, 0x6d, 0x73, 0x67, 0x73, + 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x05, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x6f, 0x6f, 0x74, 0x65, 0x72, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x6f, 0x6f, 0x74, 0x65, 0x72, 0x12, 0x28, + 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x6d, + 0x61, 0x69, 0x6e, 0x2e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x4d, 0x73, 0x67, 0x2e, 0x54, 0x79, + 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x64, 0x41, + 0x66, 0x74, 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x70, 0x61, 0x64, 0x41, + 0x66, 0x74, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x69, 0x73, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x18, + 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x69, 0x73, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x31, + 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, + 0x45, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x45, 0x4e, 0x55, 0x4d, 0x10, 0x01, 0x12, 0x09, 0x0a, + 0x05, 0x4f, 0x4e, 0x45, 0x4f, 0x46, 0x10, 0x02, 0x12, 0x07, 0x0a, 0x03, 0x56, 0x41, 0x52, 0x10, + 0x03, 0x22, 0x6c, 0x0a, 0x04, 0x46, 0x69, 0x6e, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x61, 0x72, + 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, + 0x74, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x61, 0x72, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x76, 0x61, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, + 0x61, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x61, + 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x65, 0x64, 0x41, 0x6c, 0x6c, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x6e, 0x65, 0x65, 0x64, 0x41, 0x6c, 0x6c, 0x22, + 0x9f, 0x04, 0x0a, 0x04, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x50, 0x61, 0x63, 0x6b, + 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x50, 0x61, 0x63, 0x6b, 0x61, + 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1e, + 0x0a, 0x0a, 0x70, 0x62, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x70, 0x62, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, + 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x62, 0x61, 0x73, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x62, 0x61, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, + 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x18, + 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x05, 0x62, 0x61, 0x73, 0x65, + 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x6d, 0x61, 0x69, 0x6e, 0x2e, 0x4d, + 0x73, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x05, 0x62, 0x61, 0x73, 0x65, 0x73, 0x12, 0x21, 0x0a, + 0x04, 0x62, 0x61, 0x73, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x6d, 0x61, + 0x69, 0x6e, 0x2e, 0x4d, 0x73, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x62, 0x61, 0x73, 0x65, + 0x12, 0x29, 0x0a, 0x08, 0x6d, 0x73, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x09, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x6d, 0x61, 0x69, 0x6e, 0x2e, 0x4d, 0x73, 0x67, 0x4e, 0x61, 0x6d, + 0x65, 0x52, 0x08, 0x6d, 0x73, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x2b, 0x0a, 0x09, 0x73, + 0x6f, 0x72, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, + 0x2e, 0x6d, 0x61, 0x69, 0x6e, 0x2e, 0x4d, 0x73, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x09, 0x73, + 0x6f, 0x72, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x31, 0x0a, 0x07, 0x69, 0x74, 0x65, 0x72, + 0x4d, 0x61, 0x70, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6d, 0x61, 0x69, 0x6e, + 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x2e, 0x49, 0x74, 0x65, 0x72, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x07, 0x69, 0x74, 0x65, 0x72, 0x4d, 0x61, 0x70, 0x12, 0x22, 0x0a, 0x06, 0x74, + 0x6f, 0x53, 0x6f, 0x72, 0x74, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x6d, 0x61, + 0x69, 0x6e, 0x2e, 0x53, 0x6f, 0x72, 0x74, 0x52, 0x06, 0x74, 0x6f, 0x53, 0x6f, 0x72, 0x74, 0x12, + 0x16, 0x0a, 0x06, 0x67, 0x6f, 0x50, 0x61, 0x74, 0x68, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x67, 0x6f, 0x50, 0x61, 0x74, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x6f, 0x47, 0x75, 0x69, + 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x64, 0x6f, 0x47, 0x75, 0x69, 0x12, 0x16, 0x0a, + 0x06, 0x64, 0x6f, 0x48, 0x54, 0x54, 0x50, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x64, + 0x6f, 0x48, 0x54, 0x54, 0x50, 0x1a, 0x3a, 0x0a, 0x0c, 0x49, 0x74, 0x65, 0x72, 0x4d, 0x61, 0x70, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, + 0x01, 0x22, 0x57, 0x0a, 0x05, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x18, + 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x05, 0x46, 0x69, 0x6c, 0x65, + 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x6d, 0x61, 0x69, 0x6e, 0x2e, 0x46, + 0x69, 0x6c, 0x65, 0x52, 0x05, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x22, 0x38, 0x0a, 0x08, 0x49, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_file_proto_rawDescOnce sync.Once + file_file_proto_rawDescData = file_file_proto_rawDesc +) + +func file_file_proto_rawDescGZIP() []byte { + file_file_proto_rawDescOnce.Do(func() { + file_file_proto_rawDescData = protoimpl.X.CompressGZIP(file_file_proto_rawDescData) + }) + return file_file_proto_rawDescData +} + +var file_file_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_file_proto_msgTypes = make([]protoimpl.MessageInfo, 9) +var file_file_proto_goTypes = []interface{}{ + (FormatMsg_Type)(0), // 0: main.FormatMsg.Type + (*MsgVar)(nil), // 1: main.MsgVar + (*MsgName)(nil), // 2: main.MsgName + (*Sort)(nil), // 3: main.Sort + (*FormatMsg)(nil), // 4: main.FormatMsg + (*Find)(nil), // 5: main.Find + (*File)(nil), // 6: main.File + (*Files)(nil), // 7: main.Files + (*Identify)(nil), // 8: main.Identify + nil, // 9: main.File.IterMapEntry +} +var file_file_proto_depIdxs = []int32{ + 1, // 0: main.MsgName.vars:type_name -> main.MsgVar + 2, // 1: main.MsgName.localMsgs:type_name -> main.MsgName + 4, // 2: main.FormatMsg.msgs:type_name -> main.FormatMsg + 0, // 3: main.FormatMsg.type:type_name -> main.FormatMsg.Type + 2, // 4: main.File.bases:type_name -> main.MsgName + 2, // 5: main.File.base:type_name -> main.MsgName + 2, // 6: main.File.msgNames:type_name -> main.MsgName + 2, // 7: main.File.sortNames:type_name -> main.MsgName + 9, // 8: main.File.iterMap:type_name -> main.File.IterMapEntry + 3, // 9: main.File.toSort:type_name -> main.Sort + 6, // 10: main.Files.Files:type_name -> main.File + 11, // [11:11] is the sub-list for method output_type + 11, // [11:11] is the sub-list for method input_type + 11, // [11:11] is the sub-list for extension type_name + 11, // [11:11] is the sub-list for extension extendee + 0, // [0:11] is the sub-list for field type_name +} + +func init() { file_file_proto_init() } +func file_file_proto_init() { + if File_file_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_file_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgVar); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_file_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MsgName); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_file_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Sort); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_file_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FormatMsg); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_file_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Find); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_file_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*File); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_file_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Files); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_file_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Identify); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_file_proto_rawDesc, + NumEnums: 1, + NumMessages: 9, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_file_proto_goTypes, + DependencyIndexes: file_file_proto_depIdxs, + EnumInfos: file_file_proto_enumTypes, + MessageInfos: file_file_proto_msgTypes, + }.Build() + File_file_proto = out.File + file_file_proto_rawDesc = nil + file_file_proto_goTypes = nil + file_file_proto_depIdxs = nil +} diff --git a/file.sort.pb.go b/file.sort.pb.go new file mode 100644 index 0000000..327c2ca --- /dev/null +++ b/file.sort.pb.go @@ -0,0 +1,539 @@ +// Code generated by go.wit.com/apps/autogenpb DO NOT EDIT. +// This file was autogenerated with autogenpb v0.5.3 2025-09-13_13:40:21_UTC +// go install go.wit.com/apps/autogenpb@latest +// +// define which structs (messages) you want to use in the .proto file +// Then sort.pb.go and marshal.pb.go files are autogenerated +// +// autogenpb uses it and has an example .proto file with instructions +// + +package main + +import ( + "fmt" + "iter" + "sync" + + "google.golang.org/protobuf/proto" +) + +// a simple global lock +var fileMu sync.RWMutex + +func (x *Files) fixUuid() { + if x == nil { + return + } + if x.Uuid == "6c9ae4dd-648d-4b51-9738-bd59fb8fafd5" { + return + } + x.Uuid = "6c9ae4dd-648d-4b51-9738-bd59fb8fafd5" + x.Version = "v0.0.38 go.wit.com/apps/autogenpb" +} + +func NewFiles() *Files { + x := new(Files) + x.Uuid = "6c9ae4dd-648d-4b51-9738-bd59fb8fafd5" + x.Version = "v0.0.38 go.wit.com/apps/autogenpb" + return x +} + +// START SORT + +// DEFINE THE Files SCANNER. +// itializes a new scanner. +func newFilesScanner(things []*Files) *FilesScanner { + return &FilesScanner{things: things} +} + +type FilesScanner struct { + sync.Mutex + + things []*Files + index int +} + +func (it *FilesScanner) Scan() bool { + if it.index >= len(it.things) { + return false + } + it.Lock() + it.index++ + it.Unlock() + return true +} + +// Next() returns the next thing in the array +func (it *FilesScanner) Next() *Files { + if it.things[it.index-1] == nil { + fmt.Println("Next() error in FilesScanner", it.index) + } + return it.things[it.index-1] +} + +// END DEFINE THE SCANNER + +// DEFINE THE File SCANNER. +// itializes a new scanner. +func newFileScanner(things []*File) *FileScanner { + return &FileScanner{things: things} +} + +type FileScanner struct { + sync.Mutex + + things []*File + index int +} + +func (it *FileScanner) Scan() bool { + if it.index >= len(it.things) { + return false + } + it.Lock() + it.index++ + it.Unlock() + return true +} + +// Next() returns the next thing in the array +func (it *FileScanner) Next() *File { + if it.things[it.index-1] == nil { + fmt.Println("Next() error in FileScanner", it.index) + } + return it.things[it.index-1] +} + +// END DEFINE THE SCANNER + +// DEFINE THE MsgVar SCANNER. +// itializes a new scanner. +func newMsgVarScanner(things []*MsgVar) *MsgVarScanner { + return &MsgVarScanner{things: things} +} + +type MsgVarScanner struct { + sync.Mutex + + things []*MsgVar + index int +} + +func (it *MsgVarScanner) Scan() bool { + if it.index >= len(it.things) { + return false + } + it.Lock() + it.index++ + it.Unlock() + return true +} + +// Next() returns the next thing in the array +func (it *MsgVarScanner) Next() *MsgVar { + if it.things[it.index-1] == nil { + fmt.Println("Next() error in MsgVarScanner", it.index) + } + return it.things[it.index-1] +} + +// END DEFINE THE SCANNER + +// DEFINE THE MsgName SCANNER. +// itializes a new scanner. +func newMsgNameScanner(things []*MsgName) *MsgNameScanner { + return &MsgNameScanner{things: things} +} + +type MsgNameScanner struct { + sync.Mutex + + things []*MsgName + index int +} + +func (it *MsgNameScanner) Scan() bool { + if it.index >= len(it.things) { + return false + } + it.Lock() + it.index++ + it.Unlock() + return true +} + +// Next() returns the next thing in the array +func (it *MsgNameScanner) Next() *MsgName { + if it.things[it.index-1] == nil { + fmt.Println("Next() error in MsgNameScanner", it.index) + } + return it.things[it.index-1] +} + +// END DEFINE THE SCANNER + +// DEFINE THE Sort SCANNER. +// itializes a new scanner. +func newSortScanner(things []*Sort) *SortScanner { + return &SortScanner{things: things} +} + +type SortScanner struct { + sync.Mutex + + things []*Sort + index int +} + +func (it *SortScanner) Scan() bool { + if it.index >= len(it.things) { + return false + } + it.Lock() + it.index++ + it.Unlock() + return true +} + +// Next() returns the next thing in the array +func (it *SortScanner) Next() *Sort { + if it.things[it.index-1] == nil { + fmt.Println("Next() error in SortScanner", it.index) + } + return it.things[it.index-1] +} + +// END DEFINE THE SCANNER + +// DEFINE THE FormatMsg SCANNER. +// itializes a new scanner. +func newFormatMsgScanner(things []*FormatMsg) *FormatMsgScanner { + return &FormatMsgScanner{things: things} +} + +type FormatMsgScanner struct { + sync.Mutex + + things []*FormatMsg + index int +} + +func (it *FormatMsgScanner) Scan() bool { + if it.index >= len(it.things) { + return false + } + it.Lock() + it.index++ + it.Unlock() + return true +} + +// Next() returns the next thing in the array +func (it *FormatMsgScanner) Next() *FormatMsg { + if it.things[it.index-1] == nil { + fmt.Println("Next() error in FormatMsgScanner", it.index) + } + return it.things[it.index-1] +} + +// END DEFINE THE SCANNER + +// DEFINE THE Find SCANNER. +// itializes a new scanner. +func newFindScanner(things []*Find) *FindScanner { + return &FindScanner{things: things} +} + +type FindScanner struct { + sync.Mutex + + things []*Find + index int +} + +func (it *FindScanner) Scan() bool { + if it.index >= len(it.things) { + return false + } + it.Lock() + it.index++ + it.Unlock() + return true +} + +// Next() returns the next thing in the array +func (it *FindScanner) Next() *Find { + if it.things[it.index-1] == nil { + fmt.Println("Next() error in FindScanner", it.index) + } + return it.things[it.index-1] +} + +// END DEFINE THE SCANNER + +// DEFINE THE Identify SCANNER. +// itializes a new scanner. +func newIdentifyScanner(things []*Identify) *IdentifyScanner { + return &IdentifyScanner{things: things} +} + +type IdentifyScanner struct { + sync.Mutex + + things []*Identify + index int +} + +func (it *IdentifyScanner) Scan() bool { + if it.index >= len(it.things) { + return false + } + it.Lock() + it.index++ + it.Unlock() + return true +} + +// Next() returns the next thing in the array +func (it *IdentifyScanner) Next() *Identify { + if it.things[it.index-1] == nil { + fmt.Println("Next() error in IdentifyScanner", it.index) + } + return it.things[it.index-1] +} + +// END DEFINE THE SCANNER + +// safely returns a slice of pointers to the FRUIT protobufs +func (x *Files) allFiles() []*File { + x.RLock() + defer x.RUnlock() + + // Create a new slice to hold pointers to each FRUIT + var tmp []*File + tmp = make([]*File, len(x.Files)) + for i, p := range x.Files { + tmp[i] = p // Copy pointers for safe iteration + } + + return tmp +} + +// safely returns a slice of pointers to the FRUIT protobufs +func (x *File) allMsgNames() []*MsgName { + x.RLock() + defer x.RUnlock() + + // Create a new slice to hold pointers to each FRUIT + var tmp []*MsgName + tmp = make([]*MsgName, len(x.MsgNames)) + for i, p := range x.MsgNames { + tmp[i] = p // Copy pointers for safe iteration + } + + return tmp +} + +// safely returns a slice of pointers to the FRUIT protobufs +func (x *File) allSortNames() []*MsgName { + x.RLock() + defer x.RUnlock() + + // Create a new slice to hold pointers to each FRUIT + var tmp []*MsgName + tmp = make([]*MsgName, len(x.SortNames)) + for i, p := range x.SortNames { + tmp[i] = p // Copy pointers for safe iteration + } + + return tmp +} + +// safely returns a slice of pointers to the FRUIT protobufs +func (x *File) allToSort() []*Sort { + x.RLock() + defer x.RUnlock() + + // Create a new slice to hold pointers to each FRUIT + var tmp []*Sort + tmp = make([]*Sort, len(x.ToSort)) + for i, p := range x.ToSort { + tmp[i] = p // Copy pointers for safe iteration + } + + return tmp +} + +// safely returns a slice of pointers to the FRUIT protobufs +func (x *MsgName) allVars() []*MsgVar { + x.RLock() + defer x.RUnlock() + + // Create a new slice to hold pointers to each FRUIT + var tmp []*MsgVar + tmp = make([]*MsgVar, len(x.Vars)) + for i, p := range x.Vars { + tmp[i] = p // Copy pointers for safe iteration + } + + return tmp +} + +// safely returns a slice of pointers to the FRUIT protobufs +func (x *FormatMsg) allMsgs() []*FormatMsg { + x.RLock() + defer x.RUnlock() + + // Create a new slice to hold pointers to each FRUIT + var tmp []*FormatMsg + tmp = make([]*FormatMsg, len(x.Msgs)) + for i, p := range x.Msgs { + tmp[i] = p // Copy pointers for safe iteration + } + + return tmp +} + +// safely returns a slice of pointers to the File protobufs +func (x *Files) selectAllFiles() []*File { + x.RLock() + defer x.RUnlock() + + // Create a new slice to hold pointers to each File + var tmp []*File + tmp = make([]*File, len(x.Files)) + for i, p := range x.Files { + tmp[i] = p // Copy pointers for safe iteration + } + + return tmp +} + +// safely returns a slice of pointers to the MsgName protobufs +func (x *File) selectAllMsgNames() []*MsgName { + x.RLock() + defer x.RUnlock() + + // Create a new slice to hold pointers to each MsgName + var tmp []*MsgName + tmp = make([]*MsgName, len(x.MsgNames)) + for i, p := range x.MsgNames { + tmp[i] = p // Copy pointers for safe iteration + } + + return tmp +} + +// safely returns a slice of pointers to the MsgName protobufs +func (x *File) selectAllSortNames() []*MsgName { + x.RLock() + defer x.RUnlock() + + // Create a new slice to hold pointers to each MsgName + var tmp []*MsgName + tmp = make([]*MsgName, len(x.SortNames)) + for i, p := range x.SortNames { + tmp[i] = p // Copy pointers for safe iteration + } + + return tmp +} + +// safely returns a slice of pointers to the Sort protobufs +func (x *File) selectAllToSort() []*Sort { + x.RLock() + defer x.RUnlock() + + // Create a new slice to hold pointers to each Sort + var tmp []*Sort + tmp = make([]*Sort, len(x.ToSort)) + for i, p := range x.ToSort { + tmp[i] = p // Copy pointers for safe iteration + } + + return tmp +} + +// safely returns a slice of pointers to the MsgVar protobufs +func (x *MsgName) selectAllVars() []*MsgVar { + x.RLock() + defer x.RUnlock() + + // Create a new slice to hold pointers to each MsgVar + var tmp []*MsgVar + tmp = make([]*MsgVar, len(x.Vars)) + for i, p := range x.Vars { + tmp[i] = p // Copy pointers for safe iteration + } + + return tmp +} + +// safely returns a slice of pointers to the FormatMsg protobufs +func (x *FormatMsg) selectAllMsgs() []*FormatMsg { + x.RLock() + defer x.RUnlock() + + // Create a new slice to hold pointers to each FormatMsg + var tmp []*FormatMsg + tmp = make([]*FormatMsg, len(x.Msgs)) + for i, p := range x.Msgs { + tmp[i] = p // Copy pointers for safe iteration + } + + return tmp +} + +// END SORT + +func (x *Files) Len() int { + x.RLock() + defer x.RUnlock() + + return len(x.Files) +} + +// a Append() shortcut (that does Clone() with a mutex) notsure if it really works +func (x *Files) Append(y *File) *File { + x.Lock() + defer x.Unlock() + + z := proto.Clone(y).(*File) + x.Files = append(x.Files, z) + + return z +} + +func (x *Files) All() *FileScanner { + FilePointers := x.selectAllFiles() + + scanner := newFileScanner(FilePointers) + return scanner +} + +// Iterate 'for x := range' syntax using the awesome golang 1.24 'iter' +func (x *Files) IterAll() iter.Seq[*File] { + items := x.selectAllFiles() + // log.Println("Made All() Iter.Seq[] with length", len(items)) + return func(yield func(*File) bool) { + for _, v := range items { + if !yield(v) { + return + } + } + } +} +func (x *Files) Delete(y *File) bool { + x.Lock() + defer x.Unlock() + + for i, _ := range x.Files { + if x.Files[i] == y { + x.Files[i] = x.Files[len(x.Files)-1] + x.Files = x.Files[:len(x.Files)-1] + return true + } + } + return false +} diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..9b40806 --- /dev/null +++ b/go.mod @@ -0,0 +1,18 @@ +module go.wit.com/apps/autogenpb + +go 1.24.1 + +require ( + github.com/go-cmd/cmd v1.4.3 + go.wit.com/dev/alexflint/arg v1.6.3 + go.wit.com/lib/fhelp v0.0.23 + go.wit.com/lib/gui/shell v0.22.33 + go.wit.com/log v0.25.1 + golang.org/x/text v0.29.0 + google.golang.org/protobuf v1.36.9 +) + +require ( + github.com/alexflint/go-scalar v1.2.0 // indirect + github.com/google/uuid v1.6.0 // indirect +) diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..159b8d7 --- /dev/null +++ b/go.sum @@ -0,0 +1,32 @@ +github.com/alexflint/go-scalar v1.2.0 h1:WR7JPKkeNpnYIOfHRa7ivM21aWAdHD0gEWHCx+WQBRw= +github.com/alexflint/go-scalar v1.2.0/go.mod h1:LoFvNMqS1CPrMVltza4LvnGKhaSpc3oyLEBUZVhhS2o= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/go-cmd/cmd v1.4.3 h1:6y3G+3UqPerXvPcXvj+5QNPHT02BUw7p6PsqRxLNA7Y= +github.com/go-cmd/cmd v1.4.3/go.mod h1:u3hxg/ry+D5kwh8WvUkHLAMe2zQCaXd00t35WfQaOFk= +github.com/go-test/deep v1.1.0 h1:WOcxcdHcvdgThNXjw0t76K42FXTU7HpNQWHpA2HHNlg= +github.com/go-test/deep v1.1.0/go.mod h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncVwcsE= +github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= +github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= +go.wit.com/dev/alexflint/arg v1.6.3 h1:EduPl3oA/Sk4XcBVM7EYERlHjvbyEDysK5PqI/Wmdtw= +go.wit.com/dev/alexflint/arg v1.6.3/go.mod h1:RKOrAnxFl+856vbfvMEYcdd4qgBq2ZEO8atUcINendY= +go.wit.com/lib/fhelp v0.0.23 h1:XWQLxxS603xQwJ5IKjCKQ5vNeiivh3jfVrmDdc5piJ8= +go.wit.com/lib/fhelp v0.0.23/go.mod h1:8lRn3kJUuxkhief0JjbxL/ydw06ZJx/HLw7eMx9Xx9Y= +go.wit.com/lib/gui/shell v0.22.33 h1:3MvWBQU4rOHK4Ac5MkQ62ndW7WhCBpu9F3AVeUF7YgQ= +go.wit.com/lib/gui/shell v0.22.33/go.mod h1:aRDwKXKXkZaO4y/0KPe1lhKQCXpyi8hXgUEOrHhzpAI= +go.wit.com/log v0.25.1 h1:74WVf9NSN6z5jc2oSbA1ehxdZ7V/NBXTk5t0jIoaTMg= +go.wit.com/log v0.25.1/go.mod h1:XE4lTfAibWgwBJksIk7u3IEJ8xcBvNhnlewYAQGj2Ew= +golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk= +golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/protobuf v1.36.9 h1:w2gp2mA27hUeUzj9Ex9FBjsBm40zfaDtEWow293U7Iw= +google.golang.org/protobuf v1.36.9/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=