Browse Source

fix issue #861 (#862)

* fix issue #861

* fix issue #861

Co-authored-by: anqiansong <anqiansong@xiaoheiban.cn>
anqiansong 3 years ago
parent
commit
c8428a7f65
2 changed files with 24 additions and 6 deletions
  1. 23 5
      tools/goctl/rpc/generator/genpb.go
  2. 1 1
      tools/goctl/rpc/generator/genserver.go

+ 23 - 5
tools/goctl/rpc/generator/genpb.go

@@ -23,12 +23,24 @@ func (g *DefaultGenerator) GenPb(ctx DirContext, protoImportPath []string, proto
 	directory = filepath.Clean(directory)
 	cw.WriteString("protoc ")
 	protoImportPathSet := collection.NewSet()
+	isSamePackage := true
 	for _, ip := range protoImportPath {
 		pip := " --proto_path=" + ip
 		if protoImportPathSet.Contains(pip) {
 			continue
 		}
 
+		abs, err := filepath.Abs(ip)
+		if err != nil {
+			return err
+		}
+
+		if abs == directory {
+			isSamePackage = true
+		} else {
+			isSamePackage = false
+		}
+
 		protoImportPathSet.AddStr(pip)
 		cw.WriteString(pip)
 	}
@@ -36,6 +48,7 @@ func (g *DefaultGenerator) GenPb(ctx DirContext, protoImportPath []string, proto
 	if !protoImportPathSet.Contains(currentPath) {
 		cw.WriteString(currentPath)
 	}
+
 	cw.WriteString(" " + proto.Name)
 	if strings.Contains(proto.GoPackage, "/") {
 		cw.WriteString(" --go_out=plugins=grpc:" + ctx.GetMain().Filename)
@@ -57,13 +70,18 @@ func (g *DefaultGenerator) GenPb(ctx DirContext, protoImportPath []string, proto
 	}
 
 	var currentFileOpt string
-	if filepath.IsAbs(proto.GoPackage) {
-		currentFileOpt = " --go_opt=M" + base + "=" + proto.GoPackage
-	} else if strings.Contains(proto.GoPackage, string(filepath.Separator)) {
-		currentFileOpt = " --go_opt=M" + base + "=./" + proto.GoPackage
+	if !isSamePackage || (len(proto.GoPackage) > 0 && proto.GoPackage != proto.Package.Name) {
+		if filepath.IsAbs(proto.GoPackage) {
+			currentFileOpt = " --go_opt=M" + base + "=" + proto.GoPackage
+		} else if strings.Contains(proto.GoPackage, string(filepath.Separator)) {
+			currentFileOpt = " --go_opt=M" + base + "=./" + proto.GoPackage
+		} else {
+			currentFileOpt = " --go_opt=M" + base + "=../" + proto.GoPackage
+		}
 	} else {
-		currentFileOpt = " --go_opt=M" + base + "=../" + proto.GoPackage
+		currentFileOpt = " --go_opt=M" + base + "=."
 	}
+
 	if !optSet.Contains(currentFileOpt) {
 		cw.WriteString(currentFileOpt)
 	}

+ 1 - 1
tools/goctl/rpc/generator/genserver.go

@@ -19,7 +19,7 @@ const (
 package server
 
 import (
-	"context"
+	{{if .notStream}}"context"{{end}}
 
 	{{.imports}}
 )