nicer usage output

This commit is contained in:
Mario Hros 2017-03-08 20:44:01 +01:00
parent 8488cf10ce
commit 9173d259ef
2 changed files with 20 additions and 20 deletions

View File

@ -33,7 +33,7 @@ func (p *Parser) WriteUsage(w io.Writer) {
fmt.Fprintln(w, p.version) fmt.Fprintln(w, p.version)
} }
fmt.Fprintf(w, "usage: %s", p.config.Program) fmt.Fprintf(w, "Usage: %s", p.config.Program)
// write the option component of the usage message // write the option component of the usage message
for _, spec := range options { for _, spec := range options {
@ -80,9 +80,9 @@ func (p *Parser) WriteHelp(w io.Writer) {
// write the list of positionals // write the list of positionals
if len(positionals) > 0 { if len(positionals) > 0 {
fmt.Fprint(w, "\npositional arguments:\n") fmt.Fprint(w, "\nPositional arguments:\n")
for _, spec := range positionals { for _, spec := range positionals {
left := " " + spec.long left := " " + strings.ToUpper(spec.long)
fmt.Fprint(w, left) fmt.Fprint(w, left)
if spec.help != "" { if spec.help != "" {
if len(left)+2 < colWidth { if len(left)+2 < colWidth {
@ -97,7 +97,7 @@ func (p *Parser) WriteHelp(w io.Writer) {
} }
// write the list of options // write the list of options
fmt.Fprint(w, "\noptions:\n") fmt.Fprint(w, "\nOptions:\n")
for _, spec := range options { for _, spec := range options {
printOption(w, spec) printOption(w, spec)
} }

View File

@ -10,15 +10,15 @@ import (
) )
func TestWriteUsage(t *testing.T) { func TestWriteUsage(t *testing.T) {
expectedUsage := "usage: example [--name NAME] [--value VALUE] [--verbose] [--dataset DATASET] [--optimize OPTIMIZE] [--ids IDS] [--values VALUES] [--workers WORKERS] INPUT [OUTPUT [OUTPUT ...]]\n" expectedUsage := "Usage: example [--name NAME] [--value VALUE] [--verbose] [--dataset DATASET] [--optimize OPTIMIZE] [--ids IDS] [--values VALUES] [--workers WORKERS] INPUT [OUTPUT [OUTPUT ...]]\n"
expectedHelp := `usage: example [--name NAME] [--value VALUE] [--verbose] [--dataset DATASET] [--optimize OPTIMIZE] [--ids IDS] [--values VALUES] [--workers WORKERS] INPUT [OUTPUT [OUTPUT ...]] expectedHelp := `Usage: example [--name NAME] [--value VALUE] [--verbose] [--dataset DATASET] [--optimize OPTIMIZE] [--ids IDS] [--values VALUES] [--workers WORKERS] INPUT [OUTPUT [OUTPUT ...]]
positional arguments: Positional arguments:
input INPUT
output list of outputs OUTPUT list of outputs
options: Options:
--name NAME name to use [default: Foo Bar] --name NAME name to use [default: Foo Bar]
--value VALUE secret value [default: 42] --value VALUE secret value [default: 42]
--verbose, -v verbosity level --verbose, -v verbosity level
@ -61,13 +61,13 @@ options:
} }
func TestUsageLongPositionalWithHelp(t *testing.T) { func TestUsageLongPositionalWithHelp(t *testing.T) {
expectedHelp := `usage: example VERYLONGPOSITIONALWITHHELP expectedHelp := `Usage: example VERYLONGPOSITIONALWITHHELP
positional arguments: Positional arguments:
verylongpositionalwithhelp VERYLONGPOSITIONALWITHHELP
this positional argument is very long this positional argument is very long
options: Options:
--help, -h display this help and exit --help, -h display this help and exit
` `
var args struct { var args struct {
@ -84,9 +84,9 @@ options:
} }
func TestUsageWithProgramName(t *testing.T) { func TestUsageWithProgramName(t *testing.T) {
expectedHelp := `usage: myprogram expectedHelp := `Usage: myprogram
options: Options:
--help, -h display this help and exit --help, -h display this help and exit
` `
config := Config{ config := Config{
@ -110,9 +110,9 @@ func (versioned) Version() string {
func TestUsageWithVersion(t *testing.T) { func TestUsageWithVersion(t *testing.T) {
expectedHelp := `example 3.2.1 expectedHelp := `example 3.2.1
usage: example Usage: example
options: Options:
--help, -h display this help and exit --help, -h display this help and exit
--version display version and exit --version display version and exit
` `
@ -139,9 +139,9 @@ func (described) Description() string {
func TestUsageWithDescription(t *testing.T) { func TestUsageWithDescription(t *testing.T) {
expectedHelp := `this program does this and that expectedHelp := `this program does this and that
usage: example Usage: example
options: Options:
--help, -h display this help and exit --help, -h display this help and exit
` `
os.Args[0] = "example" os.Args[0] = "example"