diff options
| author | Eric Paris <[email protected]> | 2015-05-07 16:44:02 -0400 |
|---|---|---|
| committer | Eric Paris <[email protected]> | 2015-05-08 11:41:17 -0400 |
| commit | 1bfac8f0cd77d2a18baf33d904b3ea0e6ea821f5 (patch) | |
| tree | 94abaa55cec3b7fa1cbc22f76776ab5c18c6f4a0 /flag.go | |
| parent | 8730624c6c03fa1c5b8ae471cb5e4d735784d32a (diff) | |
parseLongArg code rework for readability
move the -- parsing up into the parent
make it more obvious which values we are using
Diffstat (limited to 'flag.go')
| -rw-r--r-- | flag.go | 24 |
1 files changed, 9 insertions, 15 deletions
@@ -505,10 +505,6 @@ func (f *FlagSet) setFlag(flag *Flag, value string, origArg string) error { func (f *FlagSet) parseLongArg(s string, args []string) (a []string, err error) { a = args - if len(s) == 2 { // "--" terminates the flags - f.args = append(f.args, args...) - return - } name := s[2:] if len(name) == 0 || name[0] == '-' || name[0] == '=' { err = f.failf("bad flag syntax: %s", s) @@ -521,24 +517,23 @@ func (f *FlagSet) parseLongArg(s string, args []string) (a []string, err error) if !alreadythere { if name == "help" { // special case for nice help message. f.usage() - return args, ErrHelp + return a, ErrHelp } err = f.failf("unknown flag: --%s", name) return } + var value string if len(split) == 1 { if bv, ok := flag.Value.(boolFlag); !ok || !bv.IsBoolFlag() { err = f.failf("flag needs an argument: %s", s) return } - f.setFlag(flag, "true", s) + value = "true" } else { - if e := f.setFlag(flag, split[1], s); e != nil { - err = e - return - } + value = split[1] } - return args, nil + err = f.setFlag(flag, value, s) + return } func (f *FlagSet) parseShortArg(s string, args []string) (a []string, err error) { @@ -605,12 +600,11 @@ func (f *FlagSet) parseArgs(args []string) (err error) { } if s[1] == '-' { - args, err = f.parseLongArg(s, args) - - if len(s) == 2 { - // stop parsing after -- + if len(s) == 2 { // "--" terminates the flags + f.args = append(f.args, args...) break } + args, err = f.parseLongArg(s, args) } else { args, err = f.parseShortArg(s, args) } |
