Support -? as an alias for --help
Also print errors before and after usage, like pflag.
This commit is contained in:
parent
5e40d477f9
commit
aa2ac24c25
26
main.go
26
main.go
|
|
@ -141,6 +141,8 @@ func main() {
|
||||||
|
|
||||||
flVersion := pflag.Bool("version", false, "print the version and exit")
|
flVersion := pflag.Bool("version", false, "print the version and exit")
|
||||||
flHelp := pflag.BoolP("help", "h", false, "print help text and exit")
|
flHelp := pflag.BoolP("help", "h", false, "print help text and exit")
|
||||||
|
pflag.BoolVarP(flHelp, "__?", "?", false, "print help text and exit") // support -? as an alias to -h
|
||||||
|
pflag.CommandLine.MarkHidden("__?")
|
||||||
flManual := pflag.Bool("man", false, "print the full manual and exit")
|
flManual := pflag.Bool("man", false, "print the full manual and exit")
|
||||||
|
|
||||||
flVerbose := pflag.IntP("verbose", "v",
|
flVerbose := pflag.IntP("verbose", "v",
|
||||||
|
|
@ -306,6 +308,23 @@ func main() {
|
||||||
"DEPRECATED: use --period instead")
|
"DEPRECATED: use --period instead")
|
||||||
mustMarkDeprecated("wait", "use --period instead")
|
mustMarkDeprecated("wait", "use --period instead")
|
||||||
|
|
||||||
|
// For whatever reason pflag hardcodes stderr for the "usage" line when
|
||||||
|
// using the default FlagSet. We tweak the output a bit anyway.
|
||||||
|
usage := func(out io.Writer, msg string) {
|
||||||
|
// When pflag parsing hits an error, it prints a message before and
|
||||||
|
// after the usage, which makes for nice reading.
|
||||||
|
if msg != "" {
|
||||||
|
fmt.Fprintln(out, msg)
|
||||||
|
}
|
||||||
|
fmt.Fprintln(out, "Usage:")
|
||||||
|
pflag.CommandLine.SetOutput(out)
|
||||||
|
pflag.PrintDefaults()
|
||||||
|
if msg != "" {
|
||||||
|
fmt.Fprintln(out, msg)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
pflag.Usage = func() { usage(os.Stderr, "") }
|
||||||
|
|
||||||
//
|
//
|
||||||
// Parse and verify flags. Errors here are fatal.
|
// Parse and verify flags. Errors here are fatal.
|
||||||
//
|
//
|
||||||
|
|
@ -318,8 +337,7 @@ func main() {
|
||||||
os.Exit(0)
|
os.Exit(0)
|
||||||
}
|
}
|
||||||
if *flHelp {
|
if *flHelp {
|
||||||
pflag.CommandLine.SetOutput(os.Stdout)
|
usage(os.Stdout, "")
|
||||||
pflag.PrintDefaults()
|
|
||||||
os.Exit(0)
|
os.Exit(0)
|
||||||
}
|
}
|
||||||
if *flManual {
|
if *flManual {
|
||||||
|
|
@ -329,7 +347,7 @@ func main() {
|
||||||
|
|
||||||
// Make sure we have a root dir in which to work.
|
// Make sure we have a root dir in which to work.
|
||||||
if *flRoot == "" {
|
if *flRoot == "" {
|
||||||
fmt.Fprintf(os.Stderr, "ERROR: --root must be specified\n")
|
usage(os.Stderr, "required flag: --root must be specified")
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
var absRoot absPath
|
var absRoot absPath
|
||||||
|
|
@ -1029,6 +1047,8 @@ func handleConfigError(log *logging.Logger, printUsage bool, format string, a ..
|
||||||
fmt.Fprintln(os.Stderr, s)
|
fmt.Fprintln(os.Stderr, s)
|
||||||
if printUsage {
|
if printUsage {
|
||||||
pflag.Usage()
|
pflag.Usage()
|
||||||
|
// pflag prints flag errors both before and after usage
|
||||||
|
fmt.Fprintln(os.Stderr, s)
|
||||||
}
|
}
|
||||||
log.ExportError(s)
|
log.ExportError(s)
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue