Commit 23dec8d1 authored by Rob Pike's avatar Rob Pike

cmd/go: support new location for vet

Also delete the special case for exp, which isn't necessary any more.

Fixes #5529.

R=rsc, nightlyone
CC=golang-dev
https://golang.org/cl/9611048
parent c9121507
...@@ -275,8 +275,8 @@ var isGoTool = map[string]bool{ ...@@ -275,8 +275,8 @@ var isGoTool = map[string]bool{
"cmd/api": true, "cmd/api": true,
"cmd/cgo": true, "cmd/cgo": true,
"cmd/fix": true, "cmd/fix": true,
"cmd/vet": true,
"cmd/yacc": true, "cmd/yacc": true,
"code.google.com/p/go.tools/cmd/vet": true,
} }
// expandScanner expands a scanner.List error into all the errors in the list. // expandScanner expands a scanner.List error into all the errors in the list.
...@@ -329,7 +329,7 @@ func (p *Package) load(stk *importStack, bp *build.Package, err error) *Package ...@@ -329,7 +329,7 @@ func (p *Package) load(stk *importStack, bp *build.Package, err error) *Package
if p.build.BinDir != "" { if p.build.BinDir != "" {
p.target = filepath.Join(p.build.BinDir, elem) p.target = filepath.Join(p.build.BinDir, elem)
} }
if p.Goroot && (isGoTool[p.ImportPath] || strings.HasPrefix(p.ImportPath, "exp/")) { if isGoTool[p.ImportPath] {
p.target = filepath.Join(gorootPkg, "tool", full) p.target = filepath.Join(gorootPkg, "tool", full)
} }
if p.target != "" && buildContext.GOOS == "windows" { if p.target != "" && buildContext.GOOS == "windows" {
......
...@@ -45,12 +45,30 @@ func init() { ...@@ -45,12 +45,30 @@ func init() {
const toolWindowsExtension = ".exe" const toolWindowsExtension = ".exe"
func tool(name string) string { func tool(toolName string) string {
p := filepath.Join(toolDir, name) toolPath := filepath.Join(toolDir, toolName)
if toolIsWindows && name != "pprof" { if toolIsWindows && toolName != "pprof" {
p += toolWindowsExtension toolPath += toolWindowsExtension
} }
return p // Give a nice message if there is no tool with that name.
if _, err := os.Stat(toolPath); err != nil {
if isInGoToolsRepo(toolName) {
fmt.Fprintf(os.Stderr, "go tool: no such tool %q; to install:\n\tgo install code.google.com/p/go.tools/cmd/%s\n", toolName, toolName)
} else {
fmt.Fprintf(os.Stderr, "go tool: no such tool %q\n", toolName)
}
setExitStatus(3)
exit()
}
return toolPath
}
func isInGoToolsRepo(toolName string) bool {
switch toolName {
case "vet":
return true
}
return false
} }
func runTool(cmd *Command, args []string) { func runTool(cmd *Command, args []string) {
...@@ -70,10 +88,7 @@ func runTool(cmd *Command, args []string) { ...@@ -70,10 +88,7 @@ func runTool(cmd *Command, args []string) {
} }
} }
toolPath := tool(toolName) toolPath := tool(toolName)
// Give a nice message if there is no tool with that name. if toolPath == "" {
if _, err := os.Stat(toolPath); err != nil {
fmt.Fprintf(os.Stderr, "go tool: no such tool %q\n", toolName)
setExitStatus(3)
return return
} }
if toolIsWindows && toolName == "pprof" { if toolIsWindows && toolName == "pprof" {
...@@ -86,7 +101,6 @@ func runTool(cmd *Command, args []string) { ...@@ -86,7 +101,6 @@ func runTool(cmd *Command, args []string) {
return return
} }
} }
if toolN { if toolN {
fmt.Printf("%s %s\n", toolPath, strings.Join(args[1:], " ")) fmt.Printf("%s %s\n", toolPath, strings.Join(args[1:], " "))
return return
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment