summaryrefslogtreecommitdiff
path: root/parse.go
diff options
context:
space:
mode:
authorAlex Flint <[email protected]>2019-05-03 13:16:52 -0700
committerAlex Flint <[email protected]>2019-05-03 13:16:52 -0700
commitedd1af466781355875c44cd9213ce1e398a4c84d (patch)
tree2da0b09d4ba7a9c6ce05189036d0d0094c61ad2c /parse.go
parentc6473c4586765df1407072d27a0db2f95e35d7ce (diff)
parent6de9e789a982b5708c535308315c3d1d54217612 (diff)
Merge remote-tracking branch 'origin/master' into subcommand-impl
# Conflicts: # parse.go
Diffstat (limited to 'parse.go')
-rw-r--r--parse.go20
1 files changed, 12 insertions, 8 deletions
diff --git a/parse.go b/parse.go
index d4a6334..d06b299 100644
--- a/parse.go
+++ b/parse.go
@@ -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
}