diff options
Diffstat (limited to 'populatePackagePB.go')
| -rw-r--r-- | populatePackagePB.go | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/populatePackagePB.go b/populatePackagePB.go new file mode 100644 index 0000000..10fb4f2 --- /dev/null +++ b/populatePackagePB.go @@ -0,0 +1,33 @@ +package debian + +import ( + "google.golang.org/protobuf/proto" + "google.golang.org/protobuf/reflect/protoreflect" +) + +func setString(pb proto.Message, varname string, val string) bool { + msg := pb.ProtoReflect() // This is the entry point to the reflection API. + + descriptor := msg.Descriptor() // Get the message's descriptor, which contains metadata about its fields. + + fieldName := protoreflect.Name(varname) + fieldDescriptor := descriptor.Fields().ByName(fieldName) + + if fieldDescriptor == nil { + return false + } + + if fieldDescriptor.Kind() != protoreflect.StringKind { + // The field exists but is not a string, so we can't return it as one. + return false + } + + valueToSet := protoreflect.ValueOfString(varname) + + // 6. If the field exists and is a string, get its value. + // The value is returned as a protoreflect.Value. + msg.Set(fieldDescriptor, valueToSet) + + // 7. Convert the protoreflect.Value to a native Go string. + return true +} |
