summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Flint <[email protected]>2019-04-14 17:30:53 -0700
committerAlex Flint <[email protected]>2019-04-14 17:30:53 -0700
commit7b1d9ef23f852b0f770072be69df83b5a1bbee8f (patch)
tree9b4a352a0727d0903e33322efd3f0d30408d1d43
parent6266d3e5b7784d5d761030da6c8e468f866ae4b4 (diff)
simplify processing 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 {