tutus-chain/pkg/core/native/nativeids/gen.go

67 lines
1.3 KiB
Go

//go:build ignore
// This program generates hashes.go. It can be invoked by running
// go generate.
package main
import (
"log"
"os"
"strconv"
"text/template"
"github.com/nspcc-dev/neo-go/pkg/core/native/nativenames"
)
// srcTmpl is a nativeids package template.
const srcTmpl = `// Code generated by "go generate go run gen.go"; DO NOT EDIT.
//go:generate go run gen.go
// package nativeids contains IDs of all native contracts.
package nativeids
// IDs of all native contracts.
const (
{{- range .Natives }}
// {{ .Name }} is an ID of native {{ .Name }} contract.
{{ .Name }} int32 = {{ .ID }}
{{- end }}
)
`
type (
// Config contains parameters for the nativehashes package generation.
Config struct {
Natives []NativeInfo
}
// NativeInfo contains information about native contract needed for
// nativeids package generation.
NativeInfo struct {
Name string
ID string
}
)
// srcTemplate is a parsed nativehashes package template.
var srcTemplate = template.Must(template.New("nativeids").Parse(srcTmpl))
func main() {
f, err := os.Create("ids.go")
if err != nil {
log.Fatal(err)
}
defer f.Close()
var cfg = Config{Natives: make([]NativeInfo, len(nativenames.All))}
for i, name := range nativenames.All {
cfg.Natives[i] = NativeInfo{
Name: name,
ID: strconv.Itoa(-i - 1),
}
}
srcTemplate.Execute(f, cfg)
}