Skip to content

Commit 4ba4c9a

Browse files
committed
WIP
1 parent fb9d58e commit 4ba4c9a

2 files changed

Lines changed: 39 additions & 10 deletions

File tree

protoc-gen-go-bbs/bbs.go

Lines changed: 35 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,11 @@ type bbsGenerateHelperInterface interface {
1919
genFromProtoMethod(g *protogen.GeneratedFile, msg *protogen.Message)
2020
genToProtoSliceMethod(g *protogen.GeneratedFile, msg *protogen.Message)
2121
genFromProtoSliceMethod(g *protogen.GeneratedFile, msg *protogen.Message)
22-
genFriendlyEnums(g *protogen.GeneratedFile, msg *protogen.Message)
22+
genMessageEnums(g *protogen.GeneratedFile, msg *protogen.Message)
2323
genAccessors(g *protogen.GeneratedFile, msg *protogen.Message)
2424
genEqual(g *protogen.GeneratedFile, msg *protogen.Message)
25+
26+
genGlobalEnum(g *protogen.GeneratedFile, eNuM *protogen.Enum)
2527
}
2628
type bbsGenerateHelper struct{}
2729

@@ -392,27 +394,33 @@ func getCustomType(field *protogen.Field) string {
392394
return customType.(string)
393395
}
394396

395-
func (bbsGenerateHelper) genFriendlyEnums(g *protogen.GeneratedFile, msg *protogen.Message) {
397+
func (bbsGenerateHelper) genGlobalEnum(g *protogen.GeneratedFile, eNuM *protogen.Enum) {
398+
genEnumTypeWithValues(g, eNuM, nil)
399+
genEnumValueMaps(g, eNuM)
400+
genEnumStringFunc(g, eNuM)
401+
}
402+
403+
func (bbsGenerateHelper) genMessageEnums(g *protogen.GeneratedFile, msg *protogen.Message) {
396404
for _, eNuM := range msg.Enums {
397405
if *debug {
398406
log.Printf("Nested Enum: %+v\n", eNuM)
399407
}
400408

401-
genEnumTypeWithValues(g, msg, eNuM)
409+
genEnumTypeWithValues(g, eNuM, msg)
402410
genEnumValueMaps(g, eNuM)
403411
genEnumStringFunc(g, eNuM)
404412
}
405413
}
406414

407-
func genEnumTypeWithValues(g *protogen.GeneratedFile, msg *protogen.Message, eNuM *protogen.Enum) {
415+
func genEnumTypeWithValues(g *protogen.GeneratedFile, eNuM *protogen.Enum, msg *protogen.Message) {
408416
copysafeName, _ := getCopysafeName(g, eNuM.GoIdent)
409417
g.P("type ", copysafeName, " int32")
410418
g.P("const (")
411419
for _, enumValue := range eNuM.Values {
412420
if isEnumValueDeprecated(enumValue) {
413421
g.P("// Deprecated: marked deprecated in proto file")
414422
}
415-
enumValueName := getEnumValueName(g, msg, enumValue)
423+
enumValueName := getEnumValueName(g, enumValue, msg)
416424
actualValue := enumValue.Desc.Number()
417425

418426
g.P(enumValueName, " ", copysafeName, "=", actualValue)
@@ -455,14 +463,18 @@ func genEnumStringFunc(g *protogen.GeneratedFile, eNuM *protogen.Enum) {
455463
g.P("}")
456464
}
457465

458-
func getEnumValueName(g *protogen.GeneratedFile, msg *protogen.Message, enumValue *protogen.EnumValue) string {
459-
copysafeParentName, _ := getCopysafeName(g, msg.GoIdent)
466+
func getEnumValueName(g *protogen.GeneratedFile, enumValue *protogen.EnumValue, msg *protogen.Message) string {
460467
copysafeEnumValueName, _ := getCopysafeName(g, enumValue.GoIdent)
461468
customName := proto.GetExtension(enumValue.Desc.Options().(*descriptorpb.EnumValueOptions), E_BbsEnumvalueCustomname)
462469

463470
result := copysafeEnumValueName
464471
if len(customName.(string)) > 0 {
465-
result = copysafeParentName + "_" + customName.(string)
472+
if msg == nil {
473+
result = customName.(string)
474+
} else {
475+
copysafeParentName, _ := getCopysafeName(g, msg.GoIdent)
476+
result = copysafeParentName + "_" + customName.(string)
477+
}
466478
}
467479
return result
468480

@@ -695,8 +707,22 @@ func protocVersion(plugin *protogen.Plugin) string {
695707
}
696708

697709
var ignoredMessages []string = []string{"ProtoRoutes"}
710+
var ignoredEnums []string = []string{}
698711

699712
func generateFileContent(file *protogen.File, g *protogen.GeneratedFile) {
713+
for _, eNuM := range file.Enums {
714+
if *debug {
715+
log.Printf("New Enum Detected: %+v\n\n", eNuM)
716+
}
717+
718+
if slices.Contains(ignoredMessages, getUnsafeName(g, eNuM.GoIdent)) {
719+
log.Printf("\tIgnoring enum %s", eNuM.Desc.Name())
720+
continue
721+
}
722+
723+
helper.genGlobalEnum(g, eNuM)
724+
}
725+
700726
for _, msg := range file.Messages {
701727
if *debug {
702728
log.Printf("New Message Detected: %+v\n\n", msg)
@@ -706,7 +732,7 @@ func generateFileContent(file *protogen.File, g *protogen.GeneratedFile) {
706732
log.Printf("\tIgnoring message %s", msg.Desc.Name())
707733
continue
708734
}
709-
helper.genFriendlyEnums(g, msg)
735+
helper.genMessageEnums(g, msg)
710736
helper.genCopysafeStruct(g, msg)
711737
helper.genToProtoMethod(g, msg)
712738
helper.genFromProtoMethod(g, msg)

scripts/generate_protos.sh

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,5 +13,8 @@ popd > /dev/null
1313

1414
# regenerate protos for models
1515
pushd "${DIR}/../models" > /dev/null
16-
protoc --proto_path=.:../protoc-gen-go-bbs --go_out=. --go-bbs_out=. --go_opt=paths=source_relative --go-bbs_opt=paths=source_relative ./*.proto
16+
protoc --proto_path=.:../protoc-gen-go-bbs \
17+
--go_out=. --go_opt=paths=source_relative \
18+
--go-bbs_out=. --go-bbs_opt=paths=source_relative \
19+
./*.proto
1720
popd > /dev/null

0 commit comments

Comments
 (0)