summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--parse.go3
-rw-r--r--usage.go8
2 files changed, 10 insertions, 1 deletions
diff --git a/parse.go b/parse.go
index 4f62c60..ecbb7e4 100644
--- a/parse.go
+++ b/parse.go
@@ -356,6 +356,9 @@ func process(specs []*spec, args []string) error {
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)
diff --git a/usage.go b/usage.go
index bf7fb83..4652b36 100644
--- a/usage.go
+++ b/usage.go
@@ -54,7 +54,13 @@ func (p *Parser) WriteUsage(w io.Writer) {
fmt.Fprint(w, " ")
up := strings.ToUpper(spec.long)
if spec.multiple {
- fmt.Fprintf(w, "[%s [%s ...]]", up, up)
+ if !spec.required {
+ fmt.Fprint(w, "[")
+ }
+ fmt.Fprintf(w, "%s [%s ...]", up, up)
+ if !spec.required {
+ fmt.Fprint(w, "]")
+ }
} else {
fmt.Fprint(w, up)
}