diff --git a/cmd/breaker-cli/breaker.gohtml b/cmd/breaker-cli/breaker.gohtml index a8d10f5..c6588d6 100644 --- a/cmd/breaker-cli/breaker.gohtml +++ b/cmd/breaker-cli/breaker.gohtml @@ -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}} @@ -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 -}} diff --git a/cmd/breaker-cli/main.go b/cmd/breaker-cli/main.go index 2d2c9b6..8e1a4de 100644 --- a/cmd/breaker-cli/main.go +++ b/cmd/breaker-cli/main.go @@ -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) diff --git a/cmd/breaker-cli/template.go b/cmd/breaker-cli/template.go index f1aec85..67e258c 100644 --- a/cmd/breaker-cli/template.go +++ b/cmd/breaker-cli/template.go @@ -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}} @@ -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 -}}