summaryrefslogtreecommitdiff
path: root/parse.go
diff options
context:
space:
mode:
Diffstat (limited to 'parse.go')
-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 {