More bug fixes

This commit is contained in:
Arkadiy Tetelman committed 2023-01-01 19:00:29 -08:00
1 parent 63401cf45c
commit 49de7c273a
3 files changed
+29 -9

No files matched your search

+6 -5
View File
@@ -3,6 +3,7 @@ syntax = "proto3";
package hello.world; package hello.world;
option go_package = "./;helloworld"; option go_package = "./;helloworld";
option php_namespace = "Google\\Cloud\\Iam\\V1";
service Greeter { service Greeter {
rpc SayHello (.hello.world.HelloRequest) returns (.hello.world.HelloReply) {} rpc SayHello (.hello.world.HelloRequest) returns (.hello.world.HelloReply) {}
@@ -30,14 +31,14 @@ message HelloRequest {
} }
string name = 1; string name = 1;
hello.world.HelloRequest.Test blah = 2; .hello.world.HelloRequest.Test blah = 2;
hello.world.HelloRequest.NestedEnum blahblah = 3; .hello.world.HelloRequest.NestedEnum blahblah = 3;
hello.world.HelloReply blaha = 4; .hello.world.HelloReply blaha = 4;
} }
message HelloReply { message HelloReply {
hello.world.HelloRequest.Test blah = 2; .hello.world.HelloRequest.Test blah = 2;
hello.world.HelloRequest.NestedEnum blahblah = 3; .hello.world.HelloRequest.NestedEnum blahblah = 3;
string message = 1; string message = 1;
} }
+11 -3
View File
@@ -2,6 +2,7 @@ package protodump
import ( import (
"fmt" "fmt"
"path"
"reflect" "reflect"
"strconv" "strconv"
"strings" "strings"
@@ -44,7 +45,13 @@ func (pd *ProtoDefinition) String() string {
} }
func (pd *ProtoDefinition) Filename() string { func (pd *ProtoDefinition) Filename() string {
return pd.filename goPackage := pd.pb.GetOptions().GetGoPackage()
index := strings.Index(goPackage, ";")
if index == -1 {
return pd.descriptor.Path()
}
return path.Join(goPackage[:index], path.Base(pd.descriptor.Path()))
} }
func (pd *ProtoDefinition) writeMethod(method protoreflect.MethodDescriptor) { func (pd *ProtoDefinition) writeMethod(method protoreflect.MethodDescriptor) {
@@ -83,8 +90,10 @@ func (pd *ProtoDefinition) writeType(field protoreflect.FieldDescriptor) {
kind := field.Kind().String() kind := field.Kind().String()
if kind == "message" { if kind == "message" {
pd.write(".")
pd.write(string(field.Message().FullName())) pd.write(string(field.Message().FullName()))
} else if kind == "enum" { } else if kind == "enum" {
pd.write(".")
pd.write(string(field.Enum().FullName())) pd.write(string(field.Enum().FullName()))
} else if kind == "map" { } else if kind == "map" {
pd.write("map<") pd.write("map<")
@@ -217,7 +226,7 @@ func (pd *ProtoDefinition) writeStringFileOptions(name string, value string) {
pd.write("option ") pd.write("option ")
pd.write(name) pd.write(name)
pd.write(" = \"") pd.write(" = \"")
pd.write(value) pd.write(strings.ReplaceAll(value, "\\", "\\\\"))
pd.write("\";\n") pd.write("\";\n")
} }
@@ -333,7 +342,6 @@ func NewFromDescriptor(pb *descriptorpb.FileDescriptorProto) (*ProtoDefinition,
pd := ProtoDefinition{ pd := ProtoDefinition{
pb: pb, pb: pb,
descriptor: descriptor, descriptor: descriptor,
filename: descriptor.Path(),
} }
pd.writeFileDescriptor() pd.writeFileDescriptor()
+12 -1
View File
@@ -13,13 +13,24 @@ const magicByte = 0xa
func consumeBytes(data []byte, position int) int { func consumeBytes(data []byte, position int) int {
start := position start := position
consumedFieldOne := false
for { for {
_, _, len := protowire.ConsumeField(data[position:]) number, _, len := protowire.ConsumeField(data[position:])
if len < 0 { if len < 0 {
_ = protowire.ParseError(len) _ = protowire.ParseError(len)
return position - start return position - start
} }
// Only consume Field 1 once (to handle the case where protobuf definitions are adjacent
// in program memory)
if number == 1 {
if consumedFieldOne {
return position - start
}
consumedFieldOne = true
}
position += len position += len
} }
} }