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>
master
kingxt 4 years ago committed by GitHub
parent ff7c14c6b6
commit 4408767981
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -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,

Loading…
Cancel
Save