1
0
mirror of https://github.com/go-kratos/kratos.git synced 2025-03-21 21:27:16 +02:00
包子 996922fa87
Clean errors ()
* cmd/upgrade add proto-gen-go-errors
modify proto-gen-go-errors template and go.mod

* modify proto-gen-go-errors version and clean code
2021-06-08 19:29:29 +08:00

44 lines
839 B
Go

package main
import (
"bytes"
"text/template"
)
var errorsTemplate = `
{{ range .Errors }}
func Is{{.CamelValue}}(err error) bool {
e := errors.FromError(err)
return e.Reason == {{.Name}}_{{.Value}}.String() && e.Code == {{.HttpCode}}
}
func Error{{.CamelValue}}(format string, args ...interface{}) *errors.Error {
return errors.New({{.HttpCode}}, {{.Name}}_{{.Value}}.String(), fmt.Sprintf(format, args...))
}
{{- end }}
`
type errorInfo struct {
Name string
Value string
HttpCode int
CamelValue string
}
type errorWrapper struct {
Errors []*errorInfo
}
func (e *errorWrapper) execute() string {
buf := new(bytes.Buffer)
tmpl, err := template.New("errors").Parse(errorsTemplate)
if err != nil {
panic(err)
}
if err := tmpl.Execute(buf, e); err != nil {
panic(err)
}
return string(buf.Bytes())
}