summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Flint <[email protected]>2019-04-14 18:00:17 -0700
committerGitHub <[email protected]>2019-04-14 18:00:17 -0700
commit78d30a555ccce677d4d535d30d62218b5f3c1a27 (patch)
treee93a7e39b28081c8298e4c95f3d844cfb92eb4b9
parent42c2ab5ac64e482eaf6973f9a7f217afbfbb0292 (diff)
parent7b1d9ef23f852b0f770072be69df83b5a1bbee8f (diff)
Merge pull request #80 from alexflint/simplify-positionals
Simplify handling of positionals a little
-rw-r--r--parse.go35
1 files changed, 17 insertions, 18 deletions
diff --git a/parse.go b/parse.go
index 3c682f5..c4afda2 100644
--- a/parse.go
+++ b/parse.go
@@ -383,25 +383,24 @@ func process(specs []*spec, args []string) error {
// process positionals
for _, spec := range specs {
- if spec.positional {
- if spec.multiple {
- if spec.required && len(positionals) == 0 {
- return fmt.Errorf("%s is required", spec.long)
- }
- err := setSlice(spec.dest, positionals, true)
- if err != nil {
- return fmt.Errorf("error processing %s: %v", spec.long, err)
- }
- positionals = nil
- } else if len(positionals) > 0 {
- err := scalar.ParseValue(spec.dest, positionals[0])
- if err != nil {
- return fmt.Errorf("error processing %s: %v", spec.long, err)
- }
- positionals = positionals[1:]
- } else if spec.required {
- return fmt.Errorf("%s is required", spec.long)
+ if !spec.positional {
+ continue
+ }
+ if spec.required && len(positionals) == 0 {
+ return fmt.Errorf("%s is required", spec.long)
+ }
+ if spec.multiple {
+ err := setSlice(spec.dest, positionals, true)
+ if err != nil {
+ return fmt.Errorf("error processing %s: %v", spec.long, err)
+ }
+ positionals = nil
+ } else if len(positionals) > 0 {
+ err := scalar.ParseValue(spec.dest, positionals[0])
+ if err != nil {
+ return fmt.Errorf("error processing %s: %v", spec.long, err)
}
+ positionals = positionals[1:]
}
}
if len(positionals) > 0 {