diff options
Diffstat (limited to 'cmd/generate/main.go')
| -rw-r--r-- | cmd/generate/main.go | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/cmd/generate/main.go b/cmd/generate/main.go index eddd4cb..f846012 100644 --- a/cmd/generate/main.go +++ b/cmd/generate/main.go @@ -39,8 +39,10 @@ type Function struct { Name string Pattern string RequestTypeDef string - RequestTypeFields []RequestTypeField DoParseForm bool + RequestTypeFields []RequestTypeField + ResponseHasError bool + ResponseHasMain bool } type RequestTypeField struct { @@ -161,7 +163,7 @@ func run() error { } } if winner == "" { - panic("Counld not find import for " + parsedField.TypeDef) + panic("Could not find import for " + parsedField.TypeDef) } parsedPackage.Imports = append( slices.DeleteFunc(parsedPackage.Imports, func(i string) bool { return i == winner }), @@ -208,6 +210,24 @@ func run() error { parsedFunction.RequestTypeFields = append(parsedFunction.RequestTypeFields, parsedField) } } + if f.Type.Results == nil { + // + } else if len(f.Type.Results.List) == 1 { + switch typ := f.Type.Results.List[0].Type.(type) { + case *ast.Ident: + if typ.Name == "error" { + parsedFunction.ResponseHasError = true + } + } + if !parsedFunction.ResponseHasError { + parsedFunction.ResponseHasMain = true + } + } else if len(f.Type.Results.List) == 2 { + parsedFunction.ResponseHasError = true + parsedFunction.ResponseHasMain = true + } else if len(f.Type.Results.List) > 2 { + return errors.New("Too many return values. Max two allowed") + } parsedPackage.Functions = append(parsedPackage.Functions, parsedFunction) } } |
