mirror of https://github.com/golang/go.git
flag: allow CommandLine's Usage function to be set
Fixes #7779. LGTM=rsc R=golang-codereviews, rsc CC=golang-codereviews https://golang.org/cl/147210043
This commit is contained in:
parent
1bf18b42f8
commit
b2487ef6a3
|
|
@ -406,6 +406,7 @@ func defaultUsage(f *FlagSet) {
|
||||||
// for how to write your own usage function.
|
// for how to write your own usage function.
|
||||||
|
|
||||||
// Usage prints to standard error a usage message documenting all defined command-line flags.
|
// Usage prints to standard error a usage message documenting all defined command-line flags.
|
||||||
|
// It is called when an error occurs while parsing flags.
|
||||||
// The function is a variable that may be changed to point to a custom function.
|
// The function is a variable that may be changed to point to a custom function.
|
||||||
var Usage = func() {
|
var Usage = func() {
|
||||||
fmt.Fprintf(os.Stderr, "Usage of %s:\n", os.Args[0])
|
fmt.Fprintf(os.Stderr, "Usage of %s:\n", os.Args[0])
|
||||||
|
|
@ -702,13 +703,15 @@ func (f *FlagSet) failf(format string, a ...interface{}) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// usage calls the Usage method for the flag set, or the usage function if
|
// usage calls the Usage method for the flag set if one is specified,
|
||||||
// the flag set is CommandLine.
|
// or the appropriate default usage function otherwise.
|
||||||
func (f *FlagSet) usage() {
|
func (f *FlagSet) usage() {
|
||||||
if f == CommandLine {
|
if f.Usage == nil {
|
||||||
Usage()
|
if f == CommandLine {
|
||||||
} else if f.Usage == nil {
|
Usage()
|
||||||
defaultUsage(f)
|
} else {
|
||||||
|
defaultUsage(f)
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
f.Usage()
|
f.Usage()
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -251,6 +251,16 @@ func TestUserDefined(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestUserDefinedForCommandLine(t *testing.T) {
|
||||||
|
const help = "HELP"
|
||||||
|
var result string
|
||||||
|
ResetForTesting(func() { result = help })
|
||||||
|
Usage()
|
||||||
|
if result != help {
|
||||||
|
t.Fatalf("got %q; expected %q", result, help)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Declare a user-defined boolean flag type.
|
// Declare a user-defined boolean flag type.
|
||||||
type boolFlagVar struct {
|
type boolFlagVar struct {
|
||||||
count int
|
count int
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue