convert return types in go template
This commit is contained in:
parent
2c6429065b
commit
768eaca60a
@ -50,6 +50,17 @@ func (g *GoApiGenerator) Generate(apis *api.Api, destFile string) error {
|
|||||||
}
|
}
|
||||||
return td, nil
|
return td, nil
|
||||||
},
|
},
|
||||||
|
"convtype": func(valDef string, t api.ValType) (string, error) {
|
||||||
|
td, ok := map[api.ValType]string{
|
||||||
|
api.TInt: fmt.Sprintf("int(%s.(float64))", valDef),
|
||||||
|
api.TString: fmt.Sprintf("%s.(string)", valDef),
|
||||||
|
api.TBool: fmt.Sprintf("%s.(bool)", valDef),
|
||||||
|
}[t]
|
||||||
|
if !ok {
|
||||||
|
return "", fmt.Errorf("cannot convert type %v for val %s", t, valDef)
|
||||||
|
}
|
||||||
|
return td, nil
|
||||||
|
},
|
||||||
"zerovalue": func(t api.ValType) (string, error) {
|
"zerovalue": func(t api.ValType) (string, error) {
|
||||||
v, ok := map[api.ValType]string{
|
v, ok := map[api.ValType]string{
|
||||||
api.TInt: "0",
|
api.TInt: "0",
|
||||||
|
|||||||
@ -1,34 +1,33 @@
|
|||||||
|
{{- /*gotype: efprojects.com/kitten-ipc/kitcom/internal/golang.goGenData*/ -}}
|
||||||
{{- /*gotype: efprojects.com/kitten-ipc/kitcom.goGenData*/ -}}
|
|
||||||
|
|
||||||
// Code generated by kitcom. DO NOT EDIT.
|
// Code generated by kitcom. DO NOT EDIT.
|
||||||
|
|
||||||
package {{.PkgName}}
|
package {{ .PkgName }}
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
kittenipc "efprojects.com/kitten-ipc"
|
kittenipc "efprojects.com/kitten-ipc"
|
||||||
)
|
)
|
||||||
|
|
||||||
{{range $e := .Api.Endpoints}}
|
{{ range $e := .Api.Endpoints }}
|
||||||
|
|
||||||
type {{.Name}} struct {
|
type {{ .Name }} struct {
|
||||||
Ipc kittenipc.Callable
|
Ipc kittenipc.Callable
|
||||||
}
|
}
|
||||||
|
|
||||||
{{range $mtd := $e.Methods}}
|
{{ range $mtd := $e.Methods }}
|
||||||
func ({{$e.Name | receiver}} *{{$e.Name}}) {{$mtd.Name}}(
|
func ({{ $e.Name | receiver }} *{{ $e.Name }}) {{ $mtd.Name }}(
|
||||||
{{range $mtd.Params}}{{.Name}} {{.Type | typedef}}, {{end}}
|
{{ range $mtd.Params }}{{ .Name }} {{ .Type | typedef }}, {{ end }}
|
||||||
) (
|
) (
|
||||||
{{range $mtd.Ret}}{{.Type | typedef}}, {{end}}error,
|
{{ range $mtd.Ret }}{{ .Type | typedef }}, {{ end }}error,
|
||||||
) {
|
) {
|
||||||
results, err := {{$e.Name | receiver}}.Ipc.Call("{{$e.Name}}.{{$mtd.Name}}"{{range $mtd.Params}}, {{.Name}}{{end}})
|
results, err := {{ $e.Name | receiver }}.Ipc.Call("{{ $e.Name }}.{{ $mtd.Name }}"{{ range $mtd.Params }}, {{ .Name }}{{ end }})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return {{range $mtd.Ret}}{{.Type | zerovalue}}, {{end}} fmt.Errorf("call to {{$e.Name}}.{{$mtd.Name}} failed: %w", err)
|
return {{ range $mtd.Ret }}{{ .Type | zerovalue }}, {{ end }} fmt.Errorf("call to {{ $e.Name }}.{{ $mtd.Name }} failed: %w", err)
|
||||||
}
|
}
|
||||||
_ = results
|
_ = results
|
||||||
return {{range $idx, $ret := $mtd.Ret}}results[{{$idx}}].({{$ret.Type | typedef}}), {{end}}nil
|
return {{ range $idx, $ret := $mtd.Ret }}{{ convtype ( printf "results[%d]" $idx ) $ret.Type }}, {{ end }}nil
|
||||||
}
|
}
|
||||||
{{end}}
|
{{ end }}
|
||||||
|
|
||||||
{{end}}
|
{{ end }}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user