refactor gomod logic (#47)

* rebase upstream

* rebase

* trim no need line

* trim no need line

* trim no need line

* refactor gomod module logic

Co-authored-by: kingxt <dream4kingxt@163.com>
master
kingxt 4 years ago committed by GitHub
parent c5cd0d32d1
commit 1602f6ce81
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -4,41 +4,21 @@ import (
"fmt"
goformat "go/format"
"io"
"os"
"path"
"path/filepath"
"strings"
"github.com/tal-tech/go-zero/core/collection"
"github.com/tal-tech/go-zero/tools/goctl/api/spec"
"github.com/tal-tech/go-zero/tools/goctl/api/util"
goctlutil "github.com/tal-tech/go-zero/tools/goctl/util"
"github.com/tal-tech/go-zero/tools/goctl/util/project"
)
func getParentPackage(dir string) (string, error) {
absDir, err := filepath.Abs(dir)
p, err := project.Prepare(dir, false)
if err != nil {
return "", err
}
absDir = strings.ReplaceAll(absDir, `\`, `/`)
rootPath, hasGoMod := goctlutil.FindGoModPath(dir)
if hasGoMod {
return rootPath, nil
}
gopath := os.Getenv("GOPATH")
parent := path.Join(gopath, "src")
pos := strings.Index(absDir, parent)
if pos < 0 {
fmt.Printf("%s not in go.mod project path, or not in GOPATH of %s directory\n", absDir, gopath)
tempPath := filepath.Dir(absDir)
rootPath = absDir[len(tempPath)+1:]
} else {
rootPath = absDir[len(parent)+1:]
}
return rootPath, nil
return p.GoMod.Module, nil
}
func writeIndent(writer io.Writer, indent int) {

@ -9,6 +9,7 @@ import (
"github.com/tal-tech/go-zero/core/logx"
"github.com/tal-tech/go-zero/tools/goctl/util"
"github.com/tal-tech/go-zero/tools/goctl/util/console"
"github.com/tal-tech/go-zero/tools/goctl/util/project"
"github.com/tal-tech/go-zero/tools/goctl/util/stringx"
"github.com/urfave/cli"
)
@ -34,7 +35,7 @@ type RpcContext struct {
func MustCreateRpcContext(protoSrc, targetDir, serviceName string, idea bool) *RpcContext {
log := console.NewConsole(idea)
info, err := prepare(log)
info, err := project.Prepare(targetDir, true)
log.Must(err)
if stringx.From(protoSrc).IsEmptyOrSpace() {

@ -1,7 +1,6 @@
package ctx
package project
import (
"fmt"
"io/ioutil"
"os"
"os/exec"
@ -10,7 +9,6 @@ import (
"strings"
"github.com/tal-tech/go-zero/tools/goctl/rpc/execx"
"github.com/tal-tech/go-zero/tools/goctl/util/console"
)
const (
@ -33,20 +31,22 @@ type (
}
)
func prepare(log console.Console) (*Project, error) {
log.Info("checking go env...")
func Prepare(projectDir string, checkGrpcEnv bool) (*Project, error) {
_, err := exec.LookPath(constGo)
if err != nil {
return nil, err
}
_, err = exec.LookPath(constProtoC)
if err != nil {
return nil, err
}
_, err = exec.LookPath(constProtoCGenGo)
if err != nil {
return nil, err
if checkGrpcEnv {
_, err = exec.LookPath(constProtoC)
if err != nil {
return nil, err
}
_, err = exec.LookPath(constProtoCGenGo)
if err != nil {
return nil, err
}
}
var (
@ -87,14 +87,16 @@ func prepare(log console.Console) (*Project, error) {
}
if !strings.HasPrefix(pwd, src) {
return nil, fmt.Errorf("%s: project is not in go mod and go path", pwd)
}
r := strings.TrimPrefix(pwd, src+string(filepath.Separator))
name = filepath.Dir(r)
if name == "." {
name = r
name = filepath.Clean(filepath.Base(projectDir))
path = projectDir
} else {
r := strings.TrimPrefix(pwd, src+string(filepath.Separator))
name = filepath.Dir(r)
if name == "." {
name = r
}
path = filepath.Join(src, name)
}
path = filepath.Join(src, name)
module = name
}
Loading…
Cancel
Save