|
1 | 1 | package main
|
2 | 2 |
|
3 | 3 | import (
|
4 |
| - "os" |
| 4 | + "os/exec" |
5 | 5 |
|
6 | 6 | "github.com/ipld/go-ipld-prime/schema"
|
7 | 7 | gengo "github.com/ipld/go-ipld-prime/schema/gen/go"
|
8 | 8 | )
|
9 | 9 |
|
10 | 10 | func main() {
|
11 |
| - openOrPanic := func(filename string) *os.File { |
12 |
| - y, err := os.OpenFile(filename, os.O_CREATE|os.O_TRUNC|os.O_WRONLY, 0644) |
13 |
| - if err != nil { |
14 |
| - panic(err) |
15 |
| - } |
16 |
| - return y |
17 |
| - } |
18 |
| - |
19 |
| - tLink := schema.SpawnLink("Link") |
20 |
| - tBytes := schema.SpawnBytes("Bytes") |
21 |
| - tString := schema.SpawnString("String") |
22 |
| - tParents := schema.SpawnList("Parents", tLink, false) |
23 |
| - tMessages := schema.SpawnList("Messages", tBytes, false) |
24 |
| - tBlock := schema.SpawnStruct("Block", |
25 |
| - []schema.StructField{ |
26 |
| - schema.SpawnStructField("Parents", tParents, false, false), |
27 |
| - schema.SpawnStructField("Messages", tMessages, false, false), |
28 |
| - }, |
29 |
| - schema.StructRepresentation_Map{}, |
30 |
| - ) |
31 | 11 |
|
| 12 | + ts := schema.TypeSystem{} |
| 13 | + ts.Init() |
32 | 14 | adjCfg := &gengo.AdjunctCfg{}
|
33 |
| - pkgName := "chaintypes" |
34 | 15 |
|
35 |
| - f := openOrPanic("testchain_minima.go") |
36 |
| - gengo.EmitInternalEnums(pkgName, f) |
37 |
| - |
38 |
| - f = openOrPanic("testchain_gen.go") |
39 |
| - gengo.EmitFileHeader(pkgName, f) |
40 |
| - gengo.EmitEntireType(gengo.NewBytesReprBytesGenerator(pkgName, tBytes, adjCfg), f) |
41 |
| - gengo.EmitEntireType(gengo.NewLinkReprLinkGenerator(pkgName, tLink, adjCfg), f) |
42 |
| - gengo.EmitEntireType(gengo.NewStringReprStringGenerator(pkgName, tString, adjCfg), f) |
43 |
| - gengo.EmitEntireType(gengo.NewListReprListGenerator(pkgName, tParents, adjCfg), f) |
44 |
| - gengo.EmitEntireType(gengo.NewListReprListGenerator(pkgName, tMessages, adjCfg), f) |
45 |
| - gengo.EmitEntireType(gengo.NewStructReprMapGenerator(pkgName, tBlock, adjCfg), f) |
| 16 | + pkgName := "chaintypes" |
46 | 17 |
|
| 18 | + ts.Accumulate(schema.SpawnLink("Link")) |
| 19 | + ts.Accumulate(schema.SpawnBytes("Bytes")) |
| 20 | + ts.Accumulate(schema.SpawnString("String")) |
| 21 | + ts.Accumulate(schema.SpawnList("Parents", "Link", false)) |
| 22 | + ts.Accumulate(schema.SpawnList("Messages", "Bytes", false)) |
| 23 | + ts.Accumulate(schema.SpawnStruct("Block", |
| 24 | + []schema.StructField{ |
| 25 | + schema.SpawnStructField("Parents", "Parents", false, false), |
| 26 | + schema.SpawnStructField("Messages", "Messages", false, false), |
| 27 | + }, |
| 28 | + schema.SpawnStructRepresentationMap(nil), |
| 29 | + )) |
| 30 | + gengo.Generate(".", pkgName, ts, adjCfg) |
| 31 | + exec.Command("go", "fmt").Run() |
47 | 32 | }
|
0 commit comments