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  }