Compare commits

..

2 Commits

Author SHA1 Message Date
6152d866d6 error generate in standalone mode
Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
2023-10-18 01:01:30 +03:00
5565534f79 check error field in proto message
Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
2023-10-18 00:37:58 +03:00
2 changed files with 18 additions and 6 deletions

View File

@@ -90,6 +90,9 @@ func (g *Generator) Generate(plugin *protogen.Plugin) error {
continue
case "micro":
err = g.microGenerate(component, plugin, genClient, genServer)
if err == nil {
err = g.writeErrors(plugin)
}
case "http":
err = g.httpGenerate(component, plugin, genClient, genServer)
case "grpc", "drpc", "rpc":
@@ -113,11 +116,6 @@ func (g *Generator) Generate(plugin *protogen.Plugin) error {
}
if err = g.writeErrors(plugin); err != nil {
plugin.Error(err)
return err
}
if err = g.astGenerate(plugin); err != nil {
plugin.Error(err)
return err

16
util.go
View File

@@ -975,8 +975,10 @@ func (g *Generator) writeErrors(plugin *protogen.Plugin) error {
}
var gfile *protogen.GeneratedFile
var importPath protogen.GoImportPath
if len(errorsMap) > 0 {
gfile = plugin.NewGeneratedFile("micro_errors.pb.go", ".")
var packageName string
for _, file := range plugin.Files {
@@ -987,9 +989,16 @@ func (g *Generator) writeErrors(plugin *protogen.Plugin) error {
continue
}
packageName = string(file.GoPackageName)
importPath = file.GoImportPath
break
}
if g.standalone {
importPath = "."
}
gfile = plugin.NewGeneratedFile("micro_errors.pb.go", importPath)
gfile.P("// Code generated by protoc-gen-go-micro. DO NOT EDIT.")
gfile.P("// protoc-gen-go-micro version: " + versionComment)
gfile.P()
@@ -1009,6 +1018,11 @@ func (g *Generator) writeErrors(plugin *protogen.Plugin) error {
return err
}
for _, field := range msg.Fields {
if field.GoName == "Error" {
return fmt.Errorf("failed generate Error() string interface for %s message %s already have Error field", field.Location.SourceFile, msg.Desc.Name())
}
}
gfile.P(`func (m *`, msg.GoIdent.GoName, `) Error() string {`)
gfile.P(`buf, _ := marshaler.Marshal(m)`)
gfile.P("return string(buf)")