aboutsummaryrefslogtreecommitdiff
path: root/flag.go
diff options
context:
space:
mode:
authorAlbert Nigmatzianov <[email protected]>2017-04-20 22:30:31 +0200
committerAlbert Nigmatzianov <[email protected]>2017-04-26 21:20:41 +0200
commit1cd618220ea7ea5792d927ae2bbe39a86c5433e1 (patch)
tree56fa8b3a188ae7656bb536bd87664c4ff90dfbd0 /flag.go
parent9c8891d278271e84769ed47a1f769336291c02b8 (diff)
Prevent parsing if there are no arguments
Diffstat (limited to 'flag.go')
-rw-r--r--flag.go9
1 files changed, 9 insertions, 0 deletions
diff --git a/flag.go b/flag.go
index 7cc8e79..8a7aad1 100644
--- a/flag.go
+++ b/flag.go
@@ -406,6 +406,7 @@ func (f *FlagSet) Set(name, value string) error {
if !ok {
return fmt.Errorf("no such flag -%v", name)
}
+
err := flag.Value.Set(value)
if err != nil {
var flagName string
@@ -416,12 +417,15 @@ func (f *FlagSet) Set(name, value string) error {
}
return fmt.Errorf("invalid argument %q for %q flag: %v", value, flagName, err)
}
+
if f.actual == nil {
f.actual = make(map[NormalizedName]*Flag)
}
f.actual[normalName] = flag
f.orderedActual = append(f.orderedActual, flag)
+
flag.Changed = true
+
if len(flag.Deprecated) > 0 {
fmt.Fprintf(f.out(), "Flag --%s has been deprecated, %s\n", flag.Name, flag.Deprecated)
}
@@ -990,6 +994,11 @@ func (f *FlagSet) parseArgs(args []string, fn parseFunc) (err error) {
// The return value will be ErrHelp if -help was set but not defined.
func (f *FlagSet) Parse(arguments []string) error {
f.parsed = true
+
+ if len(arguments) < 0 {
+ return nil
+ }
+
f.args = make([]string, 0, len(arguments))
set := func(flag *Flag, value string) error {