Commit 0c8f4694 authored by Russ Cox's avatar Russ Cox

cmd/go: invoke godoc with import path when possible

Also add -n -x flags to doc, fmt, vet.
Also shorten unknown command error.

Fixes #3612.
Fixes #3613.

R=golang-dev, bradfitz, r
CC=golang-dev
https://golang.org/cl/6211053
parent f47346c5
...@@ -152,6 +152,11 @@ func addBuildFlags(cmd *Command) { ...@@ -152,6 +152,11 @@ func addBuildFlags(cmd *Command) {
cmd.Flag.Var(buildCompiler{}, "compiler", "") cmd.Flag.Var(buildCompiler{}, "compiler", "")
} }
func addBuildFlagsNX(cmd *Command) {
cmd.Flag.BoolVar(&buildN, "n", false, "")
cmd.Flag.BoolVar(&buildX, "x", false, "")
}
type stringsFlag []string type stringsFlag []string
func (v *stringsFlag) Set(s string) error { func (v *stringsFlag) Set(s string) error {
......
...@@ -145,7 +145,7 @@ Run godoc on package sources ...@@ -145,7 +145,7 @@ Run godoc on package sources
Usage: Usage:
go doc [packages] go doc [-n] [-x] [packages]
Doc runs the godoc command on the packages named by the Doc runs the godoc command on the packages named by the
import paths. import paths.
...@@ -153,6 +153,9 @@ import paths. ...@@ -153,6 +153,9 @@ import paths.
For more about godoc, see 'godoc godoc'. For more about godoc, see 'godoc godoc'.
For more about specifying packages, see 'go help packages'. For more about specifying packages, see 'go help packages'.
The -n flag prints commands that would be executed.
The -x flag prints commands as they are executed.
To run godoc with specific options, run godoc itself. To run godoc with specific options, run godoc itself.
See also: go fix, go fmt, go vet. See also: go fix, go fmt, go vet.
...@@ -192,7 +195,7 @@ Run gofmt on package sources ...@@ -192,7 +195,7 @@ Run gofmt on package sources
Usage: Usage:
go fmt [packages] go fmt [-n] [-x] [packages]
Fmt runs the command 'gofmt -l -w' on the packages named Fmt runs the command 'gofmt -l -w' on the packages named
by the import paths. It prints the names of the files that are modified. by the import paths. It prints the names of the files that are modified.
...@@ -200,6 +203,9 @@ by the import paths. It prints the names of the files that are modified. ...@@ -200,6 +203,9 @@ by the import paths. It prints the names of the files that are modified.
For more about gofmt, see 'godoc gofmt'. For more about gofmt, see 'godoc gofmt'.
For more about specifying packages, see 'go help packages'. For more about specifying packages, see 'go help packages'.
The -n flag prints commands that would be executed.
The -x flag prints commands as they are executed.
To run gofmt with specific options, run gofmt itself. To run gofmt with specific options, run gofmt itself.
See also: go doc, go fix, go vet. See also: go doc, go fix, go vet.
...@@ -414,7 +420,7 @@ Run go tool vet on packages ...@@ -414,7 +420,7 @@ Run go tool vet on packages
Usage: Usage:
go vet [packages] go vet [-n] [-x] [packages]
Vet runs the Go vet command on the packages named by the import paths. Vet runs the Go vet command on the packages named by the import paths.
...@@ -423,6 +429,9 @@ For more about specifying packages, see 'go help packages'. ...@@ -423,6 +429,9 @@ For more about specifying packages, see 'go help packages'.
To run the vet tool with specific options, run 'go tool vet'. To run the vet tool with specific options, run 'go tool vet'.
The -n flag prints commands that would be executed.
The -x flag prints commands as they are executed.
See also: go fmt, go fix. See also: go fmt, go fix.
......
...@@ -4,9 +4,14 @@ ...@@ -4,9 +4,14 @@
package main package main
func init() {
addBuildFlagsNX(cmdFmt)
addBuildFlagsNX(cmdDoc)
}
var cmdFmt = &Command{ var cmdFmt = &Command{
Run: runFmt, Run: runFmt,
UsageLine: "fmt [packages]", UsageLine: "fmt [-n] [-x] [packages]",
Short: "run gofmt on package sources", Short: "run gofmt on package sources",
Long: ` Long: `
Fmt runs the command 'gofmt -l -w' on the packages named Fmt runs the command 'gofmt -l -w' on the packages named
...@@ -15,6 +20,9 @@ by the import paths. It prints the names of the files that are modified. ...@@ -15,6 +20,9 @@ by the import paths. It prints the names of the files that are modified.
For more about gofmt, see 'godoc gofmt'. For more about gofmt, see 'godoc gofmt'.
For more about specifying packages, see 'go help packages'. For more about specifying packages, see 'go help packages'.
The -n flag prints commands that would be executed.
The -x flag prints commands as they are executed.
To run gofmt with specific options, run gofmt itself. To run gofmt with specific options, run gofmt itself.
See also: go doc, go fix, go vet. See also: go doc, go fix, go vet.
...@@ -32,7 +40,7 @@ func runFmt(cmd *Command, args []string) { ...@@ -32,7 +40,7 @@ func runFmt(cmd *Command, args []string) {
var cmdDoc = &Command{ var cmdDoc = &Command{
Run: runDoc, Run: runDoc,
UsageLine: "doc [packages]", UsageLine: "doc [-n] [-x] [packages]",
Short: "run godoc on package sources", Short: "run godoc on package sources",
Long: ` Long: `
Doc runs the godoc command on the packages named by the Doc runs the godoc command on the packages named by the
...@@ -41,6 +49,9 @@ import paths. ...@@ -41,6 +49,9 @@ import paths.
For more about godoc, see 'godoc godoc'. For more about godoc, see 'godoc godoc'.
For more about specifying packages, see 'go help packages'. For more about specifying packages, see 'go help packages'.
The -n flag prints commands that would be executed.
The -x flag prints commands as they are executed.
To run godoc with specific options, run godoc itself. To run godoc with specific options, run godoc itself.
See also: go fix, go fmt, go vet. See also: go fix, go fmt, go vet.
...@@ -53,6 +64,10 @@ func runDoc(cmd *Command, args []string) { ...@@ -53,6 +64,10 @@ func runDoc(cmd *Command, args []string) {
errorf("go doc: cannot use package file list") errorf("go doc: cannot use package file list")
continue continue
} }
run("godoc", pkg.Dir) if pkg.local {
run("godoc", pkg.Dir)
} else {
run("godoc", pkg.ImportPath)
}
} }
} }
...@@ -144,8 +144,9 @@ func main() { ...@@ -144,8 +144,9 @@ func main() {
} }
} }
fmt.Fprintf(os.Stderr, "Unknown command %#q\n\n", args[0]) fmt.Fprintf(os.Stderr, "go: unknown subcommand %#q\nRun 'go help' for usage.\n", args[0])
usage() setExitStatus(2)
exit()
} }
var usageTemplate = `Go is a tool for managing Go source code. var usageTemplate = `Go is a tool for managing Go source code.
...@@ -339,6 +340,13 @@ func exitIfErrors() { ...@@ -339,6 +340,13 @@ func exitIfErrors() {
func run(cmdargs ...interface{}) { func run(cmdargs ...interface{}) {
cmdline := stringList(cmdargs...) cmdline := stringList(cmdargs...)
if buildN || buildV {
fmt.Printf("%s\n", strings.Join(cmdline, " "))
if buildN {
return
}
}
cmd := exec.Command(cmdline[0], cmdline[1:]...) cmd := exec.Command(cmdline[0], cmdline[1:]...)
cmd.Stdout = os.Stdout cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr cmd.Stderr = os.Stderr
......
...@@ -4,9 +4,13 @@ ...@@ -4,9 +4,13 @@
package main package main
func init() {
addBuildFlagsNX(cmdVet)
}
var cmdVet = &Command{ var cmdVet = &Command{
Run: runVet, Run: runVet,
UsageLine: "vet [packages]", UsageLine: "vet [-n] [-x] [packages]",
Short: "run go tool vet on packages", Short: "run go tool vet on packages",
Long: ` Long: `
Vet runs the Go vet command on the packages named by the import paths. Vet runs the Go vet command on the packages named by the import paths.
...@@ -16,6 +20,9 @@ For more about specifying packages, see 'go help packages'. ...@@ -16,6 +20,9 @@ For more about specifying packages, see 'go help packages'.
To run the vet tool with specific options, run 'go tool vet'. To run the vet tool with specific options, run 'go tool vet'.
The -n flag prints commands that would be executed.
The -x flag prints commands as they are executed.
See also: go fmt, go fix. See also: go fmt, go fix.
`, `,
} }
......
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