From c6d01e6bb875674358205cba05c04361997eb71c Mon Sep 17 00:00:00 2001 From: Jeff Carr Date: Sat, 15 Feb 2025 12:44:05 -0600 Subject: [PATCH] Notes removed by 'git notes remove' --- 21f6e3b578d618c774892da3e292147aad1544d7 | 1225 ---------------------- 1 file changed, 1225 deletions(-) delete mode 100644 21f6e3b578d618c774892da3e292147aad1544d7 diff --git a/21f6e3b578d618c774892da3e292147aad1544d7 b/21f6e3b578d618c774892da3e292147aad1544d7 deleted file mode 100644 index bb9d75d..0000000 --- a/21f6e3b578d618c774892da3e292147aad1544d7 +++ /dev/null @@ -1,1225 +0,0 @@ -// `autogen:go.mod` - -module go.wit.com/lib/protobuf/zoopb - -go 1.22 - -toolchain go1.23.6 - -require ( - go.wit.com/log v0.22.16 - golang.org/x/sys v0.30.0 - google.golang.org/protobuf v1.36.5 -) - -// `autogen:go.sum` - -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= -go.wit.com/log v0.22.16 h1:E0Vd0Z2ILtfjhs7J/CQ4g13DK1jtQiYl6l5KOBGsZoA= -go.wit.com/log v0.22.16/go.mod h1:/c5Uj30sWRQ4B5ei2ElB6Q8Si/cK6v+KbxnH208KD84= -golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= -golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -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.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= -google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= - -// `autogen:machine.marshal.pb.go` - -// Code generated by go.wit.com/apps/autogenpb DO NOT EDIT. -// This file was autogenerated with autogenpb v0.0.50 2025-02-09_00:52:14_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 zoopb - -import ( - "google.golang.org/protobuf/encoding/protojson" - "google.golang.org/protobuf/encoding/prototext" - "google.golang.org/protobuf/proto" -) - -// human readable JSON -func (v *Machines) FormatJSON() string { - return protojson.Format(v) -} - -// marshal json -func (v *Machines) MarshalJSON() ([]byte, error) { - return protojson.Marshal(v) -} - -// unmarshal json -func (v *Machines) 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 *Machines) FormatTEXT() string { - v.fixUuid() - return prototext.Format(v) -} - -// unmarshalTEXT. This reads the .text config file back in after the user edits it -func (v *Machines) UnmarshalTEXT(data []byte) error { - return prototext.Unmarshal(data, v) -} - -// marshal to wire. This is called winning. -func (v *Machines) Marshal() ([]byte, error) { - v.fixUuid() - return proto.Marshal(v) -} - -// unmarshal from wire. You have won. -func (v *Machines) Unmarshal(data []byte) error { - return proto.Unmarshal(data, v) -} - -// human readable JSON -func (v *Machine) FormatJSON() string { - return protojson.Format(v) -} - -// marshal json -func (v *Machine) MarshalJSON() ([]byte, error) { - return protojson.Marshal(v) -} - -// unmarshal json -func (v *Machine) 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 *Machine) FormatTEXT() string { - return prototext.Format(v) -} - -// unmarshalTEXT. This reads the .text config file back in after the user edits it -func (v *Machine) UnmarshalTEXT(data []byte) error { - return prototext.Unmarshal(data, v) -} - -// marshal to wire. This is called winning. -func (v *Machine) Marshal() ([]byte, error) { - return proto.Marshal(v) -} - -// unmarshal from wire. You have won. -func (v *Machine) Unmarshal(data []byte) error { - return proto.Unmarshal(data, v) -} - -// `autogen:machine.pb.go` - -// Code modified by go.wit.com/apps/autogenpb DO NOT EDIT. -// -// user defined Mutex locks were auto added -// -// autogenpb version & build time: v0.0.50 2025-02-09_00:52:14_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.35.2-devel -// protoc v3.21.12 -// source: machine.proto - -package zoopb // autogenpb changed the package name - -import ( - reflect "reflect" - sync "sync" - - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - timestamppb "google.golang.org/protobuf/types/known/timestamppb" -) - -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 Machine struct { - sync.RWMutex // auto-added by go.wit.com/apps/autogenpb - - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Hostname string `protobuf:"bytes,1,opt,name=hostname,proto3" json:"hostname,omitempty"` // `autogenpb:unique` `autogenpb:sort` - Memory int64 `protobuf:"varint,2,opt,name=memory,proto3" json:"memory,omitempty"` - Cpus int64 `protobuf:"varint,3,opt,name=cpus,proto3" json:"cpus,omitempty"` - Distro string `protobuf:"bytes,4,opt,name=distro,proto3" json:"distro,omitempty"` - Packages *Packages `protobuf:"bytes,5,opt,name=packages,proto3" json:"packages,omitempty"` - Laststamp *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=laststamp,proto3" json:"laststamp,omitempty"` // the last time we heard anything from this machine - Installed *Packages `protobuf:"bytes,7,opt,name=installed,proto3" json:"installed,omitempty"` // packages that are installed - Available *Packages `protobuf:"bytes,8,opt,name=available,proto3" json:"available,omitempty"` // packages that are available - Wit *Packages `protobuf:"bytes,9,opt,name=wit,proto3" json:"wit,omitempty"` // packages that are available from mirrors.wit.com -} - -func (x *Machine) Reset() { - *x = Machine{} - mi := &file_machine_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *Machine) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Machine) ProtoMessage() {} - -func (x *Machine) ProtoReflect() protoreflect.Message { - mi := &file_machine_proto_msgTypes[0] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Machine.ProtoReflect.Descriptor instead. -func (*Machine) Descriptor() ([]byte, []int) { - return file_machine_proto_rawDescGZIP(), []int{0} -} - -func (x *Machine) GetHostname() string { - if x != nil { - return x.Hostname - } - return "" -} - -func (x *Machine) GetMemory() int64 { - if x != nil { - return x.Memory - } - return 0 -} - -func (x *Machine) GetCpus() int64 { - if x != nil { - return x.Cpus - } - return 0 -} - -func (x *Machine) GetDistro() string { - if x != nil { - return x.Distro - } - return "" -} - -func (x *Machine) GetPackages() *Packages { - if x != nil { - return x.Packages - } - return nil -} - -func (x *Machine) GetLaststamp() *timestamppb.Timestamp { - if x != nil { - return x.Laststamp - } - return nil -} - -func (x *Machine) GetInstalled() *Packages { - if x != nil { - return x.Installed - } - return nil -} - -func (x *Machine) GetAvailable() *Packages { - if x != nil { - return x.Available - } - return nil -} - -func (x *Machine) GetWit() *Packages { - if x != nil { - return x.Wit - } - return nil -} - -type Machines 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:b57e7fac-a8fc-4949-9d50-fa38312dec87` - Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` // `autogenpb:version:v0.0.1` - Machines []*Machine `protobuf:"bytes,3,rep,name=machines,proto3" json:"machines,omitempty"` -} - -func (x *Machines) Reset() { - *x = Machines{} - mi := &file_machine_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *Machines) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Machines) ProtoMessage() {} - -func (x *Machines) ProtoReflect() protoreflect.Message { - mi := &file_machine_proto_msgTypes[1] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Machines.ProtoReflect.Descriptor instead. -func (*Machines) Descriptor() ([]byte, []int) { - return file_machine_proto_rawDescGZIP(), []int{1} -} - -func (x *Machines) GetUuid() string { - if x != nil { - return x.Uuid - } - return "" -} - -func (x *Machines) GetVersion() string { - if x != nil { - return x.Version - } - return "" -} - -func (x *Machines) GetMachines() []*Machine { - if x != nil { - return x.Machines - } - return nil -} - -var File_machine_proto protoreflect.FileDescriptor - -var file_machine_proto_rawDesc = []byte{ - 0x0a, 0x0d, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, - 0x05, 0x67, 0x69, 0x74, 0x70, 0x62, 0x1a, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xd1, 0x02, 0x0a, 0x07, 0x4d, 0x61, 0x63, 0x68, 0x69, - 0x6e, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, - 0x0a, 0x06, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, - 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x70, 0x75, 0x73, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x63, 0x70, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x69, - 0x73, 0x74, 0x72, 0x6f, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x69, 0x73, 0x74, - 0x72, 0x6f, 0x12, 0x2b, 0x0a, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x62, 0x2e, 0x50, 0x61, 0x63, - 0x6b, 0x61, 0x67, 0x65, 0x73, 0x52, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x12, - 0x38, 0x0a, 0x09, 0x6c, 0x61, 0x73, 0x74, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, - 0x6c, 0x61, 0x73, 0x74, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x2d, 0x0a, 0x09, 0x69, 0x6e, 0x73, - 0x74, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x67, - 0x69, 0x74, 0x70, 0x62, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x52, 0x09, 0x69, - 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x12, 0x2d, 0x0a, 0x09, 0x61, 0x76, 0x61, 0x69, - 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x67, 0x69, - 0x74, 0x70, 0x62, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x52, 0x09, 0x61, 0x76, - 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x21, 0x0a, 0x03, 0x77, 0x69, 0x74, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x62, 0x2e, 0x50, 0x61, 0x63, - 0x6b, 0x61, 0x67, 0x65, 0x73, 0x52, 0x03, 0x77, 0x69, 0x74, 0x22, 0x64, 0x0a, 0x08, 0x4d, 0x61, - 0x63, 0x68, 0x69, 0x6e, 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, 0x2a, 0x0a, 0x08, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x67, 0x69, 0x74, 0x70, 0x62, 0x2e, 0x4d, - 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x52, 0x08, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x73, - 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_machine_proto_rawDescOnce sync.Once - file_machine_proto_rawDescData = file_machine_proto_rawDesc -) - -func file_machine_proto_rawDescGZIP() []byte { - file_machine_proto_rawDescOnce.Do(func() { - file_machine_proto_rawDescData = protoimpl.X.CompressGZIP(file_machine_proto_rawDescData) - }) - return file_machine_proto_rawDescData -} - -var file_machine_proto_msgTypes = make([]protoimpl.MessageInfo, 2) -var file_machine_proto_goTypes = []any{ - (*Machine)(nil), // 0: gitpb.Machine - (*Machines)(nil), // 1: gitpb.Machines - (*Packages)(nil), // 2: gitpb.Packages - (*timestamppb.Timestamp)(nil), // 3: google.protobuf.Timestamp -} -var file_machine_proto_depIdxs = []int32{ - 2, // 0: gitpb.Machine.packages:type_name -> gitpb.Packages - 3, // 1: gitpb.Machine.laststamp:type_name -> google.protobuf.Timestamp - 2, // 2: gitpb.Machine.installed:type_name -> gitpb.Packages - 2, // 3: gitpb.Machine.available:type_name -> gitpb.Packages - 2, // 4: gitpb.Machine.wit:type_name -> gitpb.Packages - 0, // 5: gitpb.Machines.machines:type_name -> gitpb.Machine - 6, // [6:6] is the sub-list for method output_type - 6, // [6:6] is the sub-list for method input_type - 6, // [6:6] is the sub-list for extension type_name - 6, // [6:6] is the sub-list for extension extendee - 0, // [0:6] is the sub-list for field type_name -} - -func init() { file_machine_proto_init() } -func file_machine_proto_init() { - if File_machine_proto != nil { - return - } - file_package_proto_init() - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_machine_proto_rawDesc, - NumEnums: 0, - NumMessages: 2, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_machine_proto_goTypes, - DependencyIndexes: file_machine_proto_depIdxs, - MessageInfos: file_machine_proto_msgTypes, - }.Build() - File_machine_proto = out.File - file_machine_proto_rawDesc = nil - file_machine_proto_goTypes = nil - file_machine_proto_depIdxs = nil -} - -// `autogen:machine.sort.pb.go` - -// Code generated by go.wit.com/apps/autogenpb DO NOT EDIT. -// This file was autogenerated with autogenpb v0.0.50 2025-02-09_00:52:14_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 zoopb - -import ( - "fmt" - "sort" - "sync" -) - -// a simple global lock -var machineMu sync.RWMutex - -func (x *Machines) fixUuid() { - if x == nil { - return - } - if x.Uuid == "b57e7fac-a8fc-4949-9d50-fa38312dec87" { - return - } - x.Uuid = "b57e7fac-a8fc-4949-9d50-fa38312dec87" - x.Version = "v0.0.1 go.wit.com/lib/protobuf/zoopb" -} - -func NewMachines() *Machines { - x := new(Machines) - x.Uuid = "b57e7fac-a8fc-4949-9d50-fa38312dec87" - x.Version = "v0.0.1 go.wit.com/lib/protobuf/zoopb" - return x -} - -// START SORT - -// DEFINE THE Machines ITERATOR. -// itializes a new iterator. -func newMachinesIterator(things []*Machines) *MachinesIterator { - return &MachinesIterator{things: things} -} - -type MachinesIterator struct { - sync.RWMutex // this isn't getting used properly yet? - - things []*Machines - index int -} - -func (it *MachinesIterator) Scan() bool { - if it.index >= len(it.things) { - return false - } - it.index++ - return true -} - -// Next() returns the next thing in the array -func (it *MachinesIterator) Next() *Machines { - if it.things[it.index-1] == nil { - fmt.Println("Next() error in MachinesIterator", it.index) - } - return it.things[it.index-1] -} - -// END DEFINE THE ITERATOR - -// DEFINE THE Machine ITERATOR. -// itializes a new iterator. -func newMachineIterator(things []*Machine) *MachineIterator { - return &MachineIterator{things: things} -} - -type MachineIterator struct { - sync.RWMutex // this isn't getting used properly yet? - - things []*Machine - index int -} - -func (it *MachineIterator) Scan() bool { - if it.index >= len(it.things) { - return false - } - it.index++ - return true -} - -// Next() returns the next thing in the array -func (it *MachineIterator) Next() *Machine { - if it.things[it.index-1] == nil { - fmt.Println("Next() error in MachineIterator", it.index) - } - return it.things[it.index-1] -} - -// END DEFINE THE ITERATOR - -// sort struct by Hostname -type MachineHostname []*Machine - -func (a MachineHostname) Len() int { return len(a) } -func (a MachineHostname) Less(i, j int) bool { return a[i].Hostname < a[j].Hostname } -func (a MachineHostname) Swap(i, j int) { a[i], a[j] = a[j], a[i] } - -// safely returns a slice of pointers to the FRUIT protobufs -func (x *Machines) allMachines() []*Machine { - x.RLock() - defer x.RUnlock() - - // Create a new slice to hold pointers to each FRUIT - var tmp []*Machine - tmp = make([]*Machine, len(x.Machines)) - for i, p := range x.Machines { - tmp[i] = p // Copy pointers for safe iteration - } - - return tmp -} - -// safely returns a slice of pointers to the Machine protobufs -func (x *Machines) selectAllMachines() []*Machine { - x.RLock() - defer x.RUnlock() - - // Create a new slice to hold pointers to each Machine - var tmp []*Machine - tmp = make([]*Machine, len(x.Machines)) - for i, p := range x.Machines { - tmp[i] = p // Copy pointers for safe iteration - } - - return tmp -} -func (x *Machines) SortByHostname() *MachineIterator { - // copy the pointers as fast as possible. - things := x.selectAllMachines() - - // todo: try slices.SortFunc() instead to see what happens - sort.Sort(MachineHostname(things)) - // slices.SortFunc(things, func(a, b *Machines) bool { - // return a.Hostname < b.Hostname // Sort by ??. let the compiler work it out?? - // }) - return newMachineIterator(things) -} - -// END SORT - -func (x *Machines) Len() int { - x.RLock() - defer x.RUnlock() - - return len(x.Machines) -} - -// just a simple Append() shortcut (but still uses the mutex lock) -func (x *Machines) Append(y *Machine) { - x.Lock() - defer x.Unlock() - - x.Machines = append(x.Machines, y) -} - -func (x *Machines) All() *MachineIterator { - MachinePointers := x.selectAllMachines() - - iterator := newMachineIterator(MachinePointers) - return iterator -} - -func (x *Machines) Delete(y *Machine) bool { - x.Lock() - defer x.Unlock() - - for i, _ := range x.Machines { - if x.Machines[i] == y { - x.Machines[i] = x.Machines[len(x.Machines)-1] - x.Machines = x.Machines[:len(x.Machines)-1] - return true - } - } - return false -} - -// lookup a Machines by the Hostname -func (x *Machines) FindByHostname(s string) *Machine { - if x == nil { - return nil - } - - x.RLock() - defer x.RUnlock() - - for i, _ := range x.Machines { - if x.Machines[i].Hostname == s { - return x.Machines[i] - } - } - return nil -} - -func (x *Machines) DeleteByHostname(s string) bool { - x.Lock() - defer x.Unlock() - - for i, _ := range x.Machines { - if x.Machines[i].Hostname == s { - x.Machines[i] = x.Machines[len(x.Machines)-1] - x.Machines = x.Machines[:len(x.Machines)-1] - return true - } - } - return false -} - -func (x *Machines) AppendByHostname(y *Machine) bool { - x.Lock() - defer x.Unlock() - - for _, p := range x.Machines { - if p.Hostname == y.Hostname { - return false - } - } - - x.Machines = append(x.Machines, y) - return true -} - -// `autogen:package.marshal.pb.go` - -// Code generated by go.wit.com/apps/autogenpb DO NOT EDIT. -// This file was autogenerated with autogenpb v0.0.50 2025-02-09_00:52:14_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 zoopb - -import ( - "google.golang.org/protobuf/encoding/protojson" - "google.golang.org/protobuf/encoding/prototext" - "google.golang.org/protobuf/proto" -) - -// human readable JSON -func (v *Packages) FormatJSON() string { - return protojson.Format(v) -} - -// marshal json -func (v *Packages) MarshalJSON() ([]byte, error) { - return protojson.Marshal(v) -} - -// unmarshal json -func (v *Packages) 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 *Packages) FormatTEXT() string { - v.fixUuid() - return prototext.Format(v) -} - -// unmarshalTEXT. This reads the .text config file back in after the user edits it -func (v *Packages) UnmarshalTEXT(data []byte) error { - return prototext.Unmarshal(data, v) -} - -// marshal to wire. This is called winning. -func (v *Packages) Marshal() ([]byte, error) { - v.fixUuid() - return proto.Marshal(v) -} - -// unmarshal from wire. You have won. -func (v *Packages) Unmarshal(data []byte) error { - return proto.Unmarshal(data, v) -} - -// `autogen:package.pb.go` - -// Code modified by go.wit.com/apps/autogenpb DO NOT EDIT. -// -// user defined Mutex locks were auto added -// -// autogenpb version & build time: v0.0.50 2025-02-09_00:52:14_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.35.2-devel -// protoc v3.21.12 -// source: package.proto - -package zoopb // autogenpb changed the package name - -import ( - reflect "reflect" - sync "sync" - - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - timestamppb "google.golang.org/protobuf/types/known/timestamppb" -) - -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 Package 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"` // `autogenpb:unique` `autogenpb:sort` - Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` // version: 0.0.3 - Laststamp *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=laststamp,proto3" json:"laststamp,omitempty"` // the last time this package was seen (used to timeout entries) - SrcPath string `protobuf:"bytes,4,opt,name=srcPath,proto3" json:"srcPath,omitempty"` // path to the sources (go.wit.com/apps/zookeeper) - Installed bool `protobuf:"varint,5,opt,name=installed,proto3" json:"installed,omitempty"` // if installed on your machine, this should be set to true - PkgName string `protobuf:"bytes,6,opt,name=pkgName,proto3" json:"pkgName,omitempty"` // the apt filename pool/main/f/foo/foo_2.2.2_riscv64.deb -} - -func (x *Package) Reset() { - *x = Package{} - mi := &file_package_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *Package) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Package) ProtoMessage() {} - -func (x *Package) ProtoReflect() protoreflect.Message { - mi := &file_package_proto_msgTypes[0] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Package.ProtoReflect.Descriptor instead. -func (*Package) Descriptor() ([]byte, []int) { - return file_package_proto_rawDescGZIP(), []int{0} -} - -func (x *Package) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *Package) GetVersion() string { - if x != nil { - return x.Version - } - return "" -} - -func (x *Package) GetLaststamp() *timestamppb.Timestamp { - if x != nil { - return x.Laststamp - } - return nil -} - -func (x *Package) GetSrcPath() string { - if x != nil { - return x.SrcPath - } - return "" -} - -func (x *Package) GetInstalled() bool { - if x != nil { - return x.Installed - } - return false -} - -func (x *Package) GetPkgName() string { - if x != nil { - return x.PkgName - } - return "" -} - -type Packages 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:2f26cc03-ea30-4481-a333-ad0acc86e1d3` - Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` // `autogenpb:version:v0.0.1` - Packages []*Package `protobuf:"bytes,3,rep,name=packages,proto3" json:"packages,omitempty"` -} - -func (x *Packages) Reset() { - *x = Packages{} - mi := &file_package_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *Packages) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Packages) ProtoMessage() {} - -func (x *Packages) ProtoReflect() protoreflect.Message { - mi := &file_package_proto_msgTypes[1] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Packages.ProtoReflect.Descriptor instead. -func (*Packages) Descriptor() ([]byte, []int) { - return file_package_proto_rawDescGZIP(), []int{1} -} - -func (x *Packages) GetUuid() string { - if x != nil { - return x.Uuid - } - return "" -} - -func (x *Packages) GetVersion() string { - if x != nil { - return x.Version - } - return "" -} - -func (x *Packages) GetPackages() []*Package { - if x != nil { - return x.Packages - } - return nil -} - -var File_package_proto protoreflect.FileDescriptor - -var file_package_proto_rawDesc = []byte{ - 0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, - 0x05, 0x67, 0x69, 0x74, 0x70, 0x62, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xc3, 0x01, 0x0a, 0x07, 0x50, 0x61, 0x63, 0x6b, - 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 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, 0x38, 0x0a, 0x09, 0x6c, 0x61, 0x73, 0x74, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x52, 0x09, 0x6c, 0x61, 0x73, 0x74, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x73, - 0x72, 0x63, 0x50, 0x61, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x72, - 0x63, 0x50, 0x61, 0x74, 0x68, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, - 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, - 0x6c, 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x6b, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x6b, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x64, 0x0a, - 0x08, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 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, 0x2a, 0x0a, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x61, - 0x67, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x67, 0x69, 0x74, 0x70, - 0x62, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x61, - 0x67, 0x65, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_package_proto_rawDescOnce sync.Once - file_package_proto_rawDescData = file_package_proto_rawDesc -) - -func file_package_proto_rawDescGZIP() []byte { - file_package_proto_rawDescOnce.Do(func() { - file_package_proto_rawDescData = protoimpl.X.CompressGZIP(file_package_proto_rawDescData) - }) - return file_package_proto_rawDescData -} - -var file_package_proto_msgTypes = make([]protoimpl.MessageInfo, 2) -var file_package_proto_goTypes = []any{ - (*Package)(nil), // 0: gitpb.Package - (*Packages)(nil), // 1: gitpb.Packages - (*timestamppb.Timestamp)(nil), // 2: google.protobuf.Timestamp -} -var file_package_proto_depIdxs = []int32{ - 2, // 0: gitpb.Package.laststamp:type_name -> google.protobuf.Timestamp - 0, // 1: gitpb.Packages.packages:type_name -> gitpb.Package - 2, // [2:2] is the sub-list for method output_type - 2, // [2:2] is the sub-list for method input_type - 2, // [2:2] is the sub-list for extension type_name - 2, // [2:2] is the sub-list for extension extendee - 0, // [0:2] is the sub-list for field type_name -} - -func init() { file_package_proto_init() } -func file_package_proto_init() { - if File_package_proto != nil { - return - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_package_proto_rawDesc, - NumEnums: 0, - NumMessages: 2, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_package_proto_goTypes, - DependencyIndexes: file_package_proto_depIdxs, - MessageInfos: file_package_proto_msgTypes, - }.Build() - File_package_proto = out.File - file_package_proto_rawDesc = nil - file_package_proto_goTypes = nil - file_package_proto_depIdxs = nil -} - -// `autogen:package.sort.pb.go` - -// Code generated by go.wit.com/apps/autogenpb DO NOT EDIT. -// This file was autogenerated with autogenpb v0.0.50 2025-02-09_00:52:14_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 zoopb - -import ( - "fmt" - "sort" - "sync" -) - -// a simple global lock -var packageMu sync.RWMutex - -func (x *Packages) fixUuid() { - if x == nil { - return - } - if x.Uuid == "2f26cc03-ea30-4481-a333-ad0acc86e1d3" { - return - } - x.Uuid = "2f26cc03-ea30-4481-a333-ad0acc86e1d3" - x.Version = "v0.0.1 go.wit.com/lib/protobuf/zoopb" -} - -func NewPackages() *Packages { - x := new(Packages) - x.Uuid = "2f26cc03-ea30-4481-a333-ad0acc86e1d3" - x.Version = "v0.0.1 go.wit.com/lib/protobuf/zoopb" - return x -} - -// START SORT - -// DEFINE THE Packages ITERATOR. -// itializes a new iterator. -func newPackagesIterator(things []*Packages) *PackagesIterator { - return &PackagesIterator{things: things} -} - -type PackagesIterator struct { - sync.RWMutex // this isn't getting used properly yet? - - things []*Packages - index int -} - -func (it *PackagesIterator) Scan() bool { - if it.index >= len(it.things) { - return false - } - it.index++ - return true -} - -// Next() returns the next thing in the array -func (it *PackagesIterator) Next() *Packages { - if it.things[it.index-1] == nil { - fmt.Println("Next() error in PackagesIterator", it.index) - } - return it.things[it.index-1] -} - -// END DEFINE THE ITERATOR - -// DEFINE THE Package ITERATOR. -// itializes a new iterator. -func newPackageIterator(things []*Package) *PackageIterator { - return &PackageIterator{things: things} -} - -type PackageIterator struct { - sync.RWMutex // this isn't getting used properly yet? - - things []*Package - index int -} - -func (it *PackageIterator) Scan() bool { - if it.index >= len(it.things) { - return false - } - it.index++ - return true -} - -// Next() returns the next thing in the array -func (it *PackageIterator) Next() *Package { - if it.things[it.index-1] == nil { - fmt.Println("Next() error in PackageIterator", it.index) - } - return it.things[it.index-1] -} - -// END DEFINE THE ITERATOR - -// sort struct by Name -type PackageName []*Package - -func (a PackageName) Len() int { return len(a) } -func (a PackageName) Less(i, j int) bool { return a[i].Name < a[j].Name } -func (a PackageName) Swap(i, j int) { a[i], a[j] = a[j], a[i] } - -// safely returns a slice of pointers to the FRUIT protobufs -func (x *Packages) allPackages() []*Package { - x.RLock() - defer x.RUnlock() - - // Create a new slice to hold pointers to each FRUIT - var tmp []*Package - tmp = make([]*Package, len(x.Packages)) - for i, p := range x.Packages { - tmp[i] = p // Copy pointers for safe iteration - } - - return tmp -} - -// safely returns a slice of pointers to the Package protobufs -func (x *Packages) selectAllPackages() []*Package { - x.RLock() - defer x.RUnlock() - - // Create a new slice to hold pointers to each Package - var tmp []*Package - tmp = make([]*Package, len(x.Packages)) - for i, p := range x.Packages { - tmp[i] = p // Copy pointers for safe iteration - } - - return tmp -} -func (x *Packages) SortByName() *PackageIterator { - // copy the pointers as fast as possible. - things := x.selectAllPackages() - - // todo: try slices.SortFunc() instead to see what happens - sort.Sort(PackageName(things)) - // slices.SortFunc(things, func(a, b *Packages) bool { - // return a.Name < b.Name // Sort by ??. let the compiler work it out?? - // }) - return newPackageIterator(things) -} - -// END SORT - -func (x *Packages) Len() int { - x.RLock() - defer x.RUnlock() - - return len(x.Packages) -} - -// just a simple Append() shortcut (but still uses the mutex lock) -func (x *Packages) Append(y *Package) { - x.Lock() - defer x.Unlock() - - x.Packages = append(x.Packages, y) -} - -func (x *Packages) All() *PackageIterator { - PackagePointers := x.selectAllPackages() - - iterator := newPackageIterator(PackagePointers) - return iterator -} - -func (x *Packages) Delete(y *Package) bool { - x.Lock() - defer x.Unlock() - - for i, _ := range x.Packages { - if x.Packages[i] == y { - x.Packages[i] = x.Packages[len(x.Packages)-1] - x.Packages = x.Packages[:len(x.Packages)-1] - return true - } - } - return false -} - -// lookup a Packages by the Name -func (x *Packages) FindByName(s string) *Package { - if x == nil { - return nil - } - - x.RLock() - defer x.RUnlock() - - for i, _ := range x.Packages { - if x.Packages[i].Name == s { - return x.Packages[i] - } - } - return nil -} - -func (x *Packages) DeleteByName(s string) bool { - x.Lock() - defer x.Unlock() - - for i, _ := range x.Packages { - if x.Packages[i].Name == s { - x.Packages[i] = x.Packages[len(x.Packages)-1] - x.Packages = x.Packages[:len(x.Packages)-1] - return true - } - } - return false -} - -func (x *Packages) AppendByName(y *Package) bool { - x.Lock() - defer x.Unlock() - - for _, p := range x.Packages { - if p.Name == y.Name { - return false - } - } - - x.Packages = append(x.Packages, y) - return true -} - -// `autogen:`