github.com/gnolang/gno@v0.0.0-20240520182011-228e9d0192ce/tm2/pkg/amino/genproto/example/main.go (about) 1 package main 2 3 import ( 4 "fmt" 5 6 "github.com/gnolang/gno/tm2/pkg/amino" 7 "github.com/gnolang/gno/tm2/pkg/amino/genproto" 8 "github.com/gnolang/gno/tm2/pkg/amino/genproto/example/submodule" 9 "github.com/gnolang/gno/tm2/pkg/amino/genproto/example/submodule2" 10 ) 11 12 // amino 13 type StructA struct { 14 FieldC int 15 FieldD uint32 16 } 17 18 // amino 19 type StructB struct { 20 FieldC int 21 FieldD uint32 22 FieldE submodule.StructSM 23 FieldF StructA 24 FieldG interface{} 25 } 26 27 func main() { 28 packages := []*amino.Package{ 29 submodule2.Package, 30 submodule.Package, 31 Package, 32 } 33 34 for i, pkg := range packages { 35 fmt.Println("#", i, "package path", pkg.GoPkgPath) 36 // Defined in genproto.go. 37 // These will generate .proto files next to 38 // their .go origins. 39 fmt.Println("#", i, "write proto3 schema") 40 genproto.WriteProto3Schema(pkg) 41 42 // Make proto folder for proto dependencies. 43 fmt.Println("#", i, "make proto folder") 44 genproto.MakeProtoFolder(pkg, "proto") 45 46 // Generate Go code from .proto files generated above. 47 fmt.Println("#", i, "run protoc") 48 genproto.RunProtoc(pkg, "proto") 49 50 // Generate bindings.go for other methods. 51 fmt.Println("#", i, "write proto bindings") 52 genproto.WriteProtoBindings(pkg) 53 } 54 }