forked from TrueCloudLab/neoneo-go
smartcontract: apply gofmt to the resulting bindings
Close #3133. Signed-off-by: Anna Shaleva <shaleva.ann@nspcc.ru>
This commit is contained in:
parent
d24579748e
commit
c42486587d
16 changed files with 769 additions and 742 deletions
|
@ -3,6 +3,7 @@ package binding
|
|||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"go/format"
|
||||
"go/token"
|
||||
"io"
|
||||
"sort"
|
||||
|
@ -127,7 +128,32 @@ func Generate(cfg Config) error {
|
|||
ctr.Imports = append(ctr.Imports, "github.com/nspcc-dev/neo-go/pkg/interop/neogointernal")
|
||||
sort.Strings(ctr.Imports)
|
||||
|
||||
return srcTemplate.Execute(cfg.Output, ctr)
|
||||
return FExecute(srcTemplate, cfg.Output, ctr)
|
||||
}
|
||||
|
||||
// FExecute tries to execute given template over the data provided, apply gofmt
|
||||
// rules to the result and write the result to the provided io.Writer. If a
|
||||
// format error occurs while formatting the resulting binding, then the generated
|
||||
// binding is written "as is" and no error is returned.
|
||||
func FExecute(tmplt *template.Template, out io.Writer, data any) error {
|
||||
in := bytes.NewBuffer(nil)
|
||||
err := tmplt.Execute(in, data)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to execute template: %w", err)
|
||||
}
|
||||
res := in.Bytes()
|
||||
|
||||
fmtRes, err := format.Source(res)
|
||||
if err != nil {
|
||||
// OK, still write something to the resulting file, our generator has known
|
||||
// bugs that make the resulting code uncompilable.
|
||||
fmtRes = res
|
||||
}
|
||||
_, err = out.Write(fmtRes)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to write the resulting binding: %w", err)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func scTypeToGo(name string, typ smartcontract.ParamType, cfg *Config) (string, string) {
|
||||
|
|
|
@ -464,7 +464,7 @@ func Generate(cfg binding.Config) error {
|
|||
"upperFirst": upperFirst,
|
||||
}).Parse(srcTmpl))
|
||||
|
||||
return srcTemplate.Execute(cfg.Output, ctr)
|
||||
return binding.FExecute(srcTemplate, cfg.Output, ctr)
|
||||
}
|
||||
|
||||
func dropManifestMethods(meths []manifest.Method, manifested []manifest.Method) []manifest.Method {
|
||||
|
|
|
@ -21,6 +21,7 @@ import (
|
|||
"github.com/consensys/gnark/backend/groth16"
|
||||
curve "github.com/consensys/gnark/backend/groth16/bls12-381"
|
||||
"github.com/consensys/gnark/backend/witness"
|
||||
"github.com/nspcc-dev/neo-go/pkg/smartcontract/binding"
|
||||
"github.com/nspcc-dev/neo-go/pkg/util/slice"
|
||||
)
|
||||
|
||||
|
@ -234,7 +235,7 @@ func GenerateVerifier(cfg Config) error {
|
|||
"byteSliceToStr": byteSliceToStr,
|
||||
}).Parse(goVerificationTmpl))
|
||||
|
||||
err := tmpl.Execute(cfg.Output, tmplParams{
|
||||
err := binding.FExecute(tmpl, cfg.Output, tmplParams{
|
||||
Alpha: alphaG1[:],
|
||||
Beta: betaG2[:],
|
||||
Gamma: gammaG2[:],
|
||||
|
@ -242,7 +243,7 @@ func GenerateVerifier(cfg Config) error {
|
|||
ICs: kvks,
|
||||
})
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to generate template: %w", err)
|
||||
return err
|
||||
}
|
||||
|
||||
if cfg.CfgOutput != nil {
|
||||
|
|
Loading…
Reference in a new issue