Skip to content

Commit

Permalink
[release-branch.go1] cmd/go: invoke godoc with import path when possible
Browse files Browse the repository at this point in the history
««« backport 5b1e024a5e89
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

»»»
  • Loading branch information
rsc committed Jun 13, 2012
1 parent 9fdd043 commit 0c2ee38
Show file tree
Hide file tree
Showing 5 changed files with 53 additions and 9 deletions.
5 changes: 5 additions & 0 deletions src/cmd/go/build.go
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,11 @@ func addBuildFlags(cmd *Command) {
cmd.Flag.Var(buildCompiler{}, "compiler", "")
}

func addBuildFlagsNX(cmd *Command) {
cmd.Flag.BoolVar(&buildN, "n", false, "")
cmd.Flag.BoolVar(&buildX, "x", false, "")
}

type stringsFlag []string

func (v *stringsFlag) Set(s string) error {
Expand Down
15 changes: 12 additions & 3 deletions src/cmd/go/doc.go
Original file line number Diff line number Diff line change
Expand Up @@ -145,14 +145,17 @@ Run godoc on package sources
Usage:
go doc [packages]
go doc [-n] [-x] [packages]
Doc runs the godoc command on the packages named by the
import paths.
For more about godoc, see 'godoc godoc'.
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.
See also: go fix, go fmt, go vet.
Expand Down Expand Up @@ -192,14 +195,17 @@ Run gofmt on package sources
Usage:
go fmt [packages]
go fmt [-n] [-x] [packages]
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.
For more about gofmt, see 'godoc gofmt'.
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.
See also: go doc, go fix, go vet.
Expand Down Expand Up @@ -414,7 +420,7 @@ Run go tool vet on packages
Usage:
go vet [packages]
go vet [-n] [-x] [packages]
Vet runs the Go vet command on the packages named by the import paths.
Expand All @@ -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'.
The -n flag prints commands that would be executed.
The -x flag prints commands as they are executed.
See also: go fmt, go fix.
Expand Down
21 changes: 18 additions & 3 deletions src/cmd/go/fmt.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,14 @@

package main

func init() {
addBuildFlagsNX(cmdFmt)
addBuildFlagsNX(cmdDoc)
}

var cmdFmt = &Command{
Run: runFmt,
UsageLine: "fmt [packages]",
UsageLine: "fmt [-n] [-x] [packages]",
Short: "run gofmt on package sources",
Long: `
Fmt runs the command 'gofmt -l -w' on the packages named
Expand All @@ -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 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.
See also: go doc, go fix, go vet.
Expand All @@ -32,7 +40,7 @@ func runFmt(cmd *Command, args []string) {

var cmdDoc = &Command{
Run: runDoc,
UsageLine: "doc [packages]",
UsageLine: "doc [-n] [-x] [packages]",
Short: "run godoc on package sources",
Long: `
Doc runs the godoc command on the packages named by the
Expand All @@ -41,6 +49,9 @@ import paths.
For more about godoc, see 'godoc godoc'.
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.
See also: go fix, go fmt, go vet.
Expand All @@ -53,6 +64,10 @@ func runDoc(cmd *Command, args []string) {
errorf("go doc: cannot use package file list")
continue
}
run("godoc", pkg.Dir)
if pkg.local {
run("godoc", pkg.Dir)
} else {
run("godoc", pkg.ImportPath)
}
}
}
12 changes: 10 additions & 2 deletions src/cmd/go/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -144,8 +144,9 @@ func main() {
}
}

fmt.Fprintf(os.Stderr, "Unknown command %#q\n\n", args[0])
usage()
fmt.Fprintf(os.Stderr, "go: unknown subcommand %#q\nRun 'go help' for usage.\n", args[0])
setExitStatus(2)
exit()
}

var usageTemplate = `Go is a tool for managing Go source code.
Expand Down Expand Up @@ -339,6 +340,13 @@ func exitIfErrors() {

func run(cmdargs ...interface{}) {
cmdline := stringList(cmdargs...)
if buildN || buildV {
fmt.Printf("%s\n", strings.Join(cmdline, " "))
if buildN {
return
}
}

cmd := exec.Command(cmdline[0], cmdline[1:]...)
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
Expand Down
9 changes: 8 additions & 1 deletion src/cmd/go/vet.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,13 @@

package main

func init() {
addBuildFlagsNX(cmdVet)
}

var cmdVet = &Command{
Run: runVet,
UsageLine: "vet [packages]",
UsageLine: "vet [-n] [-x] [packages]",
Short: "run go tool vet on packages",
Long: `
Vet runs the Go vet command on the packages named by the import paths.
Expand All @@ -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'.
The -n flag prints commands that would be executed.
The -x flag prints commands as they are executed.
See also: go fmt, go fix.
`,
}
Expand Down

0 comments on commit 0c2ee38

Please sign in to comment.