fix command run path bug (#52)
* rebase upstream * rebase * trim no need line * trim no need line * trim no need line * optimized go path logic Co-authored-by: kingxt <dream4kingxt@163.com>
This commit is contained in:
@@ -19,6 +19,7 @@ func getParentPackage(dir string) (string, error) {
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
if len(p.GoMod.Path) > 0 {
|
||||
goModePath := filepath.Clean(filepath.Dir(p.GoMod.Path))
|
||||
absPath, err := filepath.Abs(dir)
|
||||
@@ -30,7 +31,7 @@ func getParentPackage(dir string) (string, error) {
|
||||
return parent, nil
|
||||
}
|
||||
|
||||
return p.GoMod.Module, nil
|
||||
return p.Package, nil
|
||||
}
|
||||
|
||||
func writeIndent(writer io.Writer, indent int) {
|
||||
|
||||
@@ -8,7 +8,7 @@ import (
|
||||
"runtime"
|
||||
)
|
||||
|
||||
func Run(arg string) (string, error) {
|
||||
func Run(arg string, dir string) (string, error) {
|
||||
goos := runtime.GOOS
|
||||
var cmd *exec.Cmd
|
||||
switch goos {
|
||||
@@ -19,7 +19,9 @@ func Run(arg string) (string, error) {
|
||||
default:
|
||||
return "", fmt.Errorf("unexpected os: %v", goos)
|
||||
}
|
||||
|
||||
if len(dir) > 0 {
|
||||
cmd.Dir = dir
|
||||
}
|
||||
dtsout := new(bytes.Buffer)
|
||||
stderr := new(bytes.Buffer)
|
||||
cmd.Stdout = dtsout
|
||||
|
||||
@@ -169,7 +169,7 @@ func (g *defaultRpcGenerator) genCall() error {
|
||||
// if mockgen is already installed, it will generate code of gomock for shared files
|
||||
_, err = exec.LookPath("mockgen")
|
||||
if mockGenInstalled {
|
||||
execx.Run(fmt.Sprintf("go generate %s", filename))
|
||||
execx.Run(fmt.Sprintf("go generate %s", filename), "")
|
||||
}
|
||||
|
||||
return nil
|
||||
|
||||
@@ -74,7 +74,7 @@ func (g *defaultRpcGenerator) genPb() error {
|
||||
func (g *defaultRpcGenerator) protocGenGo(target string) error {
|
||||
src := filepath.Dir(g.Ctx.ProtoFileSrc)
|
||||
sh := fmt.Sprintf(`protoc -I=%s --go_out=plugins=grpc:%s %s`, src, target, g.Ctx.ProtoFileSrc)
|
||||
stdout, err := execx.Run(sh)
|
||||
stdout, err := execx.Run(sh, "")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -2,7 +2,6 @@ package project
|
||||
|
||||
import (
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"os/exec"
|
||||
"path/filepath"
|
||||
"regexp"
|
||||
@@ -21,14 +20,15 @@ const (
|
||||
|
||||
type (
|
||||
Project struct {
|
||||
Path string
|
||||
Name string
|
||||
GoMod GoMod
|
||||
Path string // Project path name
|
||||
Name string // Project name
|
||||
Package string // The service related package
|
||||
GoMod GoMod
|
||||
}
|
||||
|
||||
GoMod struct {
|
||||
Module string
|
||||
Path string
|
||||
Module string // The gomod module name
|
||||
Path string // The gomod related path
|
||||
}
|
||||
)
|
||||
|
||||
@@ -54,15 +54,16 @@ func Prepare(projectDir string, checkGrpcEnv bool) (*Project, error) {
|
||||
goMod, module string
|
||||
goPath string
|
||||
name, path string
|
||||
pkg string
|
||||
)
|
||||
|
||||
ret, err := execx.Run(constGoMod)
|
||||
ret, err := execx.Run(constGoMod, projectDir)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
goMod = strings.TrimSpace(ret)
|
||||
|
||||
ret, err = execx.Run(constGoPath)
|
||||
ret, err = execx.Run(constGoPath, "")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -82,10 +83,11 @@ func Prepare(projectDir string, checkGrpcEnv bool) (*Project, error) {
|
||||
return nil, err
|
||||
}
|
||||
} else {
|
||||
pwd, err := os.Getwd()
|
||||
pwd, err := execx.Run("pwd", projectDir)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
pwd = filepath.Clean(strings.TrimSpace(pwd))
|
||||
|
||||
if !strings.HasPrefix(pwd, src) {
|
||||
absPath, err := filepath.Abs(projectDir)
|
||||
@@ -95,6 +97,7 @@ func Prepare(projectDir string, checkGrpcEnv bool) (*Project, error) {
|
||||
|
||||
name = filepath.Clean(filepath.Base(absPath))
|
||||
path = projectDir
|
||||
pkg = name
|
||||
} else {
|
||||
r := strings.TrimPrefix(pwd, src+string(filepath.Separator))
|
||||
name = filepath.Dir(r)
|
||||
@@ -102,13 +105,15 @@ func Prepare(projectDir string, checkGrpcEnv bool) (*Project, error) {
|
||||
name = r
|
||||
}
|
||||
path = filepath.Join(src, name)
|
||||
pkg = r
|
||||
}
|
||||
module = name
|
||||
}
|
||||
|
||||
return &Project{
|
||||
Name: name,
|
||||
Path: path,
|
||||
Name: name,
|
||||
Path: path,
|
||||
Package: pkg,
|
||||
GoMod: GoMod{
|
||||
Module: module,
|
||||
Path: goMod,
|
||||
|
||||
Reference in New Issue
Block a user