12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- package parser
- import (
- "path/filepath"
- "strings"
- "github.com/tal-tech/go-zero/core/lang"
- "github.com/tal-tech/go-zero/tools/goctl/util/console"
- )
- func Transfer(proto, target string, externalImport []*Import, console console.Console) (*PbAst, error) {
- messageM := make(map[string]lang.PlaceholderType)
- enumM := make(map[string]*Enum)
- protoAst, err := parseProto(proto, messageM, enumM)
- if err != nil {
- return nil, err
- }
- for _, item := range externalImport {
- err = checkImport(item.OriginalProtoPath)
- if err != nil {
- return nil, err
- }
- innerAst, err := parseProto(item.OriginalProtoPath, protoAst.Message, protoAst.Enum)
- if err != nil {
- return nil, err
- }
- for k, v := range innerAst.Message {
- protoAst.Message[k] = v
- }
- for k, v := range innerAst.Enum {
- protoAst.Enum[k] = v
- }
- }
- protoAst.Import = externalImport
- protoAst.PbSrc = filepath.Join(target, strings.TrimSuffix(filepath.Base(proto), ".proto")+".pb.go")
- return transfer(protoAst, console)
- }
- func transfer(proto *Proto, console console.Console) (*PbAst, error) {
- parser := MustNewAstParser(proto, console)
- parse, err := parser.Parse()
- if err != nil {
- return nil, err
- }
- return parse, nil
- }
|