mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
There are a couple of places where our tests expect that 'go doc' doesn't need to do a build. Invoke the cmd/doc code directly by the go command instead of starting the doc tool in a separate process so we can preserve that property. This change moves most of the doc code into the package cmd/internal/doc, and exposes a Main function from that function that's called both by the cmd/doc package, and by go doc. This change makes couple of additional changes to intergrate doc into the go command: The counter.Open call and the increment of invocations counter are only needed by cmd/doc. The go command will open the counters file and increment a counter for the doc subcommand. We add a cmd_go_bootstrap tagged variant of the file that defines go doc so that we don't end up linking net into the bootstrap version of the go command. We don't need doc in that version of the command. We create a new flagSet rather than using flag.CommandLine because when running as part of the go command, the flags to "go doc" won't be the top level flags. We change TestGoListTest in go_test.go to use gofmt instead of doc as an example of a main package in cmd with an in-package test. For #71867 Change-Id: I3e3df83e5fa266559606fdc086b461165e09f037 Reviewed-on: https://go-review.googlesource.com/c/go/+/677775 LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Michael Pratt <mpratt@google.com> Reviewed-by: Michael Matloob <matloob@google.com>
55 lines
1.6 KiB
Go
55 lines
1.6 KiB
Go
// Copyright 2015 The Go Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
// Doc (usually run as go doc) accepts zero, one or two arguments.
|
|
//
|
|
// Zero arguments:
|
|
//
|
|
// go doc
|
|
//
|
|
// Show the documentation for the package in the current directory.
|
|
//
|
|
// One argument:
|
|
//
|
|
// go doc <pkg>
|
|
// go doc <sym>[.<methodOrField>]
|
|
// go doc [<pkg>.]<sym>[.<methodOrField>]
|
|
// go doc [<pkg>.][<sym>.]<methodOrField>
|
|
//
|
|
// The first item in this list that succeeds is the one whose documentation
|
|
// is printed. If there is a symbol but no package, the package in the current
|
|
// directory is chosen. However, if the argument begins with a capital
|
|
// letter it is always assumed to be a symbol in the current directory.
|
|
//
|
|
// Two arguments:
|
|
//
|
|
// go doc <pkg> <sym>[.<methodOrField>]
|
|
//
|
|
// Show the documentation for the package, symbol, and method or field. The
|
|
// first argument must be a full package path. This is similar to the
|
|
// command-line usage for the godoc command.
|
|
//
|
|
// For commands, unless the -cmd flag is present "go doc command"
|
|
// shows only the package-level docs for the package.
|
|
//
|
|
// The -src flag causes doc to print the full source code for the symbol, such
|
|
// as the body of a struct, function or method.
|
|
//
|
|
// The -all flag causes doc to print all documentation for the package and
|
|
// all its visible symbols. The argument must identify a package.
|
|
//
|
|
// For complete documentation, run "go help doc".
|
|
package main
|
|
|
|
import (
|
|
"cmd/internal/doc"
|
|
"cmd/internal/telemetry/counter"
|
|
"os"
|
|
)
|
|
|
|
func main() {
|
|
counter.Open()
|
|
counter.Inc("doc/invocations")
|
|
doc.Main(os.Args[1:])
|
|
}
|