@ -2,7 +2,6 @@ package project
import (
import (
"io/ioutil"
"io/ioutil"
"os"
"os/exec"
"os/exec"
"path/filepath"
"path/filepath"
"regexp"
"regexp"
@ -21,14 +20,15 @@ const (
type (
type (
Project struct {
Project struct {
Path string
Path string // Project path name
Name string
Name string // Project name
Package string // The service related package
GoMod GoMod
GoMod GoMod
}
}
GoMod struct {
GoMod struct {
Module string
Module string // The gomod module name
Path string
Path string // The gomod related path
}
}
)
)
@ -54,15 +54,16 @@ func Prepare(projectDir string, checkGrpcEnv bool) (*Project, error) {
goMod , module string
goMod , module string
goPath string
goPath string
name , path string
name , path string
pkg string
)
)
ret , err := execx . Run ( constGoMod )
ret , err := execx . Run ( constGoMod , projectDir )
if err != nil {
if err != nil {
return nil , err
return nil , err
}
}
goMod = strings . TrimSpace ( ret )
goMod = strings . TrimSpace ( ret )
ret , err = execx . Run ( constGoPath )
ret , err = execx . Run ( constGoPath , "" )
if err != nil {
if err != nil {
return nil , err
return nil , err
}
}
@ -82,10 +83,11 @@ func Prepare(projectDir string, checkGrpcEnv bool) (*Project, error) {
return nil , err
return nil , err
}
}
} else {
} else {
pwd , err := os. Getwd ( )
pwd , err := execx. Run ( "pwd" , projectDir )
if err != nil {
if err != nil {
return nil , err
return nil , err
}
}
pwd = filepath . Clean ( strings . TrimSpace ( pwd ) )
if ! strings . HasPrefix ( pwd , src ) {
if ! strings . HasPrefix ( pwd , src ) {
absPath , err := filepath . Abs ( projectDir )
absPath , err := filepath . Abs ( projectDir )
@ -95,6 +97,7 @@ func Prepare(projectDir string, checkGrpcEnv bool) (*Project, error) {
name = filepath . Clean ( filepath . Base ( absPath ) )
name = filepath . Clean ( filepath . Base ( absPath ) )
path = projectDir
path = projectDir
pkg = name
} else {
} else {
r := strings . TrimPrefix ( pwd , src + string ( filepath . Separator ) )
r := strings . TrimPrefix ( pwd , src + string ( filepath . Separator ) )
name = filepath . Dir ( r )
name = filepath . Dir ( r )
@ -102,6 +105,7 @@ func Prepare(projectDir string, checkGrpcEnv bool) (*Project, error) {
name = r
name = r
}
}
path = filepath . Join ( src , name )
path = filepath . Join ( src , name )
pkg = r
}
}
module = name
module = name
}
}
@ -109,6 +113,7 @@ func Prepare(projectDir string, checkGrpcEnv bool) (*Project, error) {
return & Project {
return & Project {
Name : name ,
Name : name ,
Path : path ,
Path : path ,
Package : pkg ,
GoMod : GoMod {
GoMod : GoMod {
Module : module ,
Module : module ,
Path : goMod ,
Path : goMod ,