github.com/ipld/go-ipld-prime@v0.21.0/node/gendemo/gen.go (about) 1 //go:build ignore 2 3 package main 4 5 import ( 6 "github.com/ipld/go-ipld-prime/datamodel" 7 "github.com/ipld/go-ipld-prime/schema" 8 gengo "github.com/ipld/go-ipld-prime/schema/gen/go" 9 ) 10 11 func main() { 12 pkgName := "gendemo" 13 ts := schema.TypeSystem{} 14 ts.Init() 15 adjCfg := &gengo.AdjunctCfg{} 16 ts.Accumulate(schema.SpawnInt("Int")) 17 ts.Accumulate(schema.SpawnString("String")) 18 ts.Accumulate(schema.SpawnStruct("Msg3", 19 []schema.StructField{ 20 schema.SpawnStructField("whee", "Int", false, false), 21 schema.SpawnStructField("woot", "Int", false, false), 22 schema.SpawnStructField("waga", "Int", false, false), 23 }, 24 schema.SpawnStructRepresentationMap(nil), 25 )) 26 ts.Accumulate(schema.SpawnMap("Map__String__Msg3", 27 "String", "Msg3", false)) 28 ts.Accumulate(schema.SpawnBool("Bar")) 29 ts.Accumulate(schema.SpawnString("Baz")) 30 ts.Accumulate(schema.SpawnInt("Foo")) 31 ts.Accumulate(schema.SpawnUnion("UnionKinded", 32 []schema.TypeName{ 33 "Foo", 34 "Bar", 35 "Baz", 36 }, schema.SpawnUnionRepresentationKinded( 37 map[datamodel.Kind]schema.TypeName{ 38 datamodel.Kind_Int: "Foo", 39 datamodel.Kind_Bool: "Bar", 40 datamodel.Kind_String: "Baz", 41 }), 42 )) 43 gengo.Generate(".", pkgName, ts, adjCfg) 44 }