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  }