Modified run command to translate symlinks to absolute paths

This commit is contained in:
NotZippy
2018-10-24 21:29:07 -07:00
parent cdef0b75a8
commit 4a877b2a8a
3 changed files with 25 additions and 5 deletions

View File

@@ -261,10 +261,10 @@ func (c *CommandConfig) InitGoPaths() {
} }
} }
utils.Logger.Info("Source root", "path", c.SrcRoot, "cwd", workingDir, "gopath", c.GoPath, "bestpath",bestpath)
if len(c.SrcRoot) == 0 && len(bestpath) > 0 { if len(c.SrcRoot) == 0 && len(bestpath) > 0 {
c.SrcRoot = bestpath c.SrcRoot = bestpath
} }
utils.Logger.Info("Source root", "path", c.SrcRoot, "cwd", workingDir, "gopath", c.GoPath)
// If source root is empty and this isn't a version then skip it // If source root is empty and this isn't a version then skip it
if len(c.SrcRoot) == 0 { if len(c.SrcRoot) == 0 {

View File

@@ -16,6 +16,9 @@ import (
"github.com/revel/cmd/model" "github.com/revel/cmd/model"
"github.com/revel/cmd/utils" "github.com/revel/cmd/utils"
"net/url" "net/url"
"github.com/kr/pty"
"io"
"bytes"
) )
var cmdNew = &Command{ var cmdNew = &Command{
@@ -114,10 +117,16 @@ func newApp(c *model.CommandConfig) (err error) {
getCmd := exec.Command("dep", "ensure", "-v") getCmd := exec.Command("dep", "ensure", "-v")
utils.CmdInit(getCmd, c.AppPath) utils.CmdInit(getCmd, c.AppPath)
utils.Logger.Info("Exec:", "args", getCmd.Args) f, err := pty.Start(getCmd);
getOutput, err := getCmd.CombinedOutput() stdout := new(bytes.Buffer)
io.Copy(io.MultiWriter(stdout, os.Stdout), f)
if err = getCmd.Wait(); err != nil {
}
utils.Logger.Info("Exec:", "args", getCmd.Args, "env", getCmd.Env, "workingdir",getCmd.Dir)
// getOutput, err := getCmd.CombinedOutput()
if err != nil { if err != nil {
return utils.NewBuildIfError(err, string(getOutput)) return utils.NewBuildIfError(err, stdout.String())
} }
} }

View File

@@ -5,13 +5,24 @@ import (
"os" "os"
"os/exec" "os/exec"
"strings" "strings"
"bytes"
"path/filepath"
) )
// Initialize the command based on the GO environment // Initialize the command based on the GO environment
func CmdInit(c *exec.Cmd, basePath string) { func CmdInit(c *exec.Cmd, basePath string) {
c.Dir = basePath c.Dir = basePath
// Dep does not like paths that are not real, convert all paths in go to real paths
realPath := &bytes.Buffer{}
for _, p := range filepath.SplitList(build.Default.GOPATH) {
rp,_ := filepath.EvalSymlinks(p)
if realPath.Len() > 0 {
realPath.WriteString(string(filepath.ListSeparator))
}
realPath.WriteString(rp)
}
// Go 1.8 fails if we do not include the GOROOT // Go 1.8 fails if we do not include the GOROOT
c.Env = []string{"GOPATH=" + build.Default.GOPATH, "GOROOT="+ os.Getenv("GOROOT")} c.Env = []string{"GOPATH=" + realPath.String(), "GOROOT="+ os.Getenv("GOROOT")}
// Fetch the rest of the env variables // Fetch the rest of the env variables
for _, e := range os.Environ() { for _, e := range os.Environ() {
pair := strings.Split(e, "=") pair := strings.Split(e, "=")