diff options
| author | Alex Flint <[email protected]> | 2019-05-03 13:16:52 -0700 |
|---|---|---|
| committer | Alex Flint <[email protected]> | 2019-05-03 13:16:52 -0700 |
| commit | edd1af466781355875c44cd9213ce1e398a4c84d (patch) | |
| tree | 2da0b09d4ba7a9c6ce05189036d0d0094c61ad2c /parse.go | |
| parent | c6473c4586765df1407072d27a0db2f95e35d7ce (diff) | |
| parent | 6de9e789a982b5708c535308315c3d1d54217612 (diff) | |
Merge remote-tracking branch 'origin/master' into subcommand-impl
# Conflicts:
# parse.go
Diffstat (limited to 'parse.go')
| -rw-r--r-- | parse.go | 20 |
1 files changed, 12 insertions, 8 deletions
@@ -12,6 +12,9 @@ import ( scalar "github.com/alexflint/go-scalar" ) +// to enable monkey-patching during tests +var osExit = os.Exit + // path represents a sequence of steps to find the output location for an // argument or subcommand in the final destination struct type path struct { @@ -72,20 +75,21 @@ func MustParse(dest ...interface{}) *Parser { p, err := NewParser(Config{}, dest...) if err != nil { fmt.Println(err) - os.Exit(-1) + osExit(-1) } + err = p.Parse(flags()) - if err == ErrHelp { + switch { + case err == ErrHelp: p.WriteHelp(os.Stdout) - os.Exit(0) - } - if err == ErrVersion { + osExit(0) + case err == ErrVersion: fmt.Println(p.version) - os.Exit(0) - } - if err != nil { + osExit(0) + case err != nil: p.Fail(err.Error()) } + return p } |
