Skip to content

Commit

Permalink
Return the return error in final
Browse files Browse the repository at this point in the history
  • Loading branch information
chenyanchen committed Mar 14, 2024
1 parent cb0d54d commit c712f49
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 30 deletions.
18 changes: 10 additions & 8 deletions cmd/breaker-cli/breaker.gohtml
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
// Code generated by "breaker-cli"; DO NOT EDIT.
// Code generated by breaker-cli. DO NOT EDIT.
// breaker-cli: https://github.com/chenyanchen/breaker/tree/main/cmd/breaker-cli

{{$PackageName := .Name -}}
package {{$PackageName}}
Expand All @@ -21,23 +22,24 @@ func New{{$StructName}}(source {{$PackageName}}.{{$InterfaceName}}) *{{$StructNa
{{range .Implemented.Methods -}}
{{$ErrorReturn := "" -}}
func (b *{{$StructName}}) {{.Name}}({{range $i, $p := .Params}}{{.Name}} {{.Type}}, {{end}}) ({{range .Results}}{{.Type}}, {{end}}) {
{{/* Find the error return */}}
{{- range .Results}}{{- if eq .Type "error" -}}{{$ErrorReturn = .Name}}{{end -}}{{- end -}}
{{/* Find the error return */}}
{{- range .Results}}{{if eq .Type "error"}}{{$ErrorReturn = .Name}}{{end}}{{end -}}

{{/* Return directly if there are no error return */}}
{{- if eq $ErrorReturn "" -}}
return b.source.{{.Name}}({{- range .Params}}{{if eq .Ellipsis true}}{{.Name}}...{{else}}{{.Name}},{{end}}{{end}})
return b.source.{{.Name}}({{range .Params}}{{if eq .Ellipsis true}}{{.Name}}...{{else}}{{.Name}},{{end}}{{end}})
{{- else -}}
var (
{{- range .Results}}
{{.Name}} {{.Type}}
{{- end}}
)
err := b.breaker.Do(func() error {
{{range $i, $r := .Results -}}{{- if $i -}},{{end}}{{.Name}}{{end}} = b.source.{{.Name}}({{range .Params}}{{if eq .Ellipsis true}}{{.Name}}...{{else}}{{.Name}},{{end}}{{end}})
{{$ErrorReturn}} = b.breaker.Do(func() error {
{{range $i, $r := .Results}}{{if $i}},{{end}}{{.Name}}{{end}} = b.source.{{.Name}}({{range .Params}}{{if eq .Ellipsis true}}{{.Name}}...{{else}}{{.Name}},{{end}}{{end}})
return {{$ErrorReturn}}
})
return {{range .Results}}{{if eq .Name $ErrorReturn }}err,{{else}}{{.Name}},{{end}}{{end}}
{{- end -}}
return {{range $i, $r :=.Results}}{{if $i}},{{end}}{{.Name}}{{end}}
{{- end}}
}

{{end -}}
Expand Down
2 changes: 0 additions & 2 deletions cmd/breaker-cli/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -235,8 +235,6 @@ func generate(ctx context.Context, pkg Package) (io.Reader, error) {
return nil, fmt.Errorf("execute template: %w", err)
}

// io.Copy(os.Stdout, buf)

data, err := imports.Process("", buf.Bytes(), nil)
if err != nil {
return nil, fmt.Errorf("goimports: %w", err)
Expand Down
34 changes: 14 additions & 20 deletions cmd/breaker-cli/template.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package main

const breakerTemplate = `// Code generated by "breaker-cli"; DO NOT EDIT.
const breakerTemplate = `// Code generated by breaker-cli. DO NOT EDIT.
// breaker-cli: https://github.com/chenyanchen/breaker/tree/main/cmd/breaker-cli
{{$PackageName := .Name -}}
package {{$PackageName}}
Expand All @@ -21,33 +22,26 @@ func New{{$StructName}}(source {{$PackageName}}.{{$InterfaceName}}) *{{$StructNa
}
{{range .Implemented.Methods -}}
{{$ErrorReturn := "nil" -}}
{{$ErrorReturn := "" -}}
func (b *{{$StructName}}) {{.Name}}({{range $i, $p := .Params}}{{.Name}} {{.Type}}, {{end}}) ({{range .Results}}{{.Type}}, {{end}}) {
{{/* Find the error return */}}
{{- range .Results}}{{if eq .Type "error"}}{{$ErrorReturn = .Name}}{{end}}{{end -}}
{{/* Return directly if there are no error return */}}
{{- if eq $ErrorReturn "" -}}
return b.source.{{.Name}}({{range .Params}}{{if eq .Ellipsis true}}{{.Name}}...{{else}}{{.Name}},{{end}}{{end}})
{{- else -}}
var (
{{- range .Results}}
{{.Name}} {{.Type}}
{{- end}}
)
_ = b.breaker.Do(func() error {
{{range $i, $r := .Results -}}
{{- if $i -}}, {{end}}
{{- if eq .Type "error" -}}
{{$ErrorReturn = .Name}}
{{- .Name -}}
{{ else }}
{{- .Name -}}
{{ end }}
{{- end}} = b.source.{{.Name}}(
{{- range .Params -}}
{{- if eq .Ellipsis true -}}
{{- .Name -}}...
{{- else -}}
{{- .Name -}},
{{- end -}}
{{- end -}})
{{$ErrorReturn}} = b.breaker.Do(func() error {
{{range $i, $r := .Results}}{{if $i}},{{end}}{{.Name}}{{end}} = b.source.{{.Name}}({{range .Params}}{{if eq .Ellipsis true}}{{.Name}}...{{else}}{{.Name}},{{end}}{{end}})
return {{$ErrorReturn}}
})
return {{range $i, $r := .Results}}{{if $i}}, {{end}}{{.Name}}{{end}}
return {{range $i, $r :=.Results}}{{if $i}},{{end}}{{.Name}}{{end}}
{{- end}}
}
{{end -}}
Expand Down

0 comments on commit c712f49

Please sign in to comment.