feat(token): add generator for Go types included in schema
This commit is contained in:
54
internal/cmd/token/main.go
Normal file
54
internal/cmd/token/main.go
Normal file
@@ -0,0 +1,54 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"log/slog"
|
||||
"os"
|
||||
|
||||
"github.com/ipld/go-ipld-prime"
|
||||
"github.com/ipld/go-ipld-prime/node/bindnode"
|
||||
)
|
||||
|
||||
const header = `// Code generated by internal/cmd/token - DO NOT EDIT.
|
||||
|
||||
package token
|
||||
|
||||
import "github.com/ipld/go-ipld-prime/datamodel"
|
||||
|
||||
`
|
||||
|
||||
func main() {
|
||||
slog.Info("Generating Go types for token.ipldsch")
|
||||
|
||||
if err := Run(); err != nil {
|
||||
slog.Error(err.Error())
|
||||
slog.Error("Finished but failed to generate and write token_gen.go")
|
||||
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
slog.Info("Finished generating and writing token_gen.go")
|
||||
os.Exit(0)
|
||||
}
|
||||
|
||||
func Run() error {
|
||||
schema, err := os.ReadFile("token.ipldsch")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
slog.Debug(string(schema))
|
||||
|
||||
typeSystem, err := ipld.LoadSchemaBytes(schema)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
buf := bytes.NewBufferString(header)
|
||||
|
||||
if err := bindnode.ProduceGoTypes(buf, typeSystem); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return os.WriteFile("token_gen.go", buf.Bytes(), 0o600)
|
||||
}
|
||||
Reference in New Issue
Block a user