From 44aa7407f6bdbc5157104969ef275cd5e51a99af Mon Sep 17 00:00:00 2001 From: Petter Rasmussen Date: Mon, 18 Jan 2016 23:03:44 +0100 Subject: Add StringSliceFlag and StringSliceParser --- cli/flags.go | 41 ++++++++++++++++++++++++++++++++++++++--- 1 file changed, 38 insertions(+), 3 deletions(-) (limited to 'cli/flags.go') diff --git a/cli/flags.go b/cli/flags.go index 6fcc435..6c82ed7 100644 --- a/cli/flags.go +++ b/cli/flags.go @@ -27,7 +27,7 @@ type BoolFlag struct { } func (self BoolFlag) GetName() string { - return self.Name + return self.Name } func (self BoolFlag) GetPatterns() []string { @@ -64,7 +64,7 @@ type StringFlag struct { } func (self StringFlag) GetName() string { - return self.Name + return self.Name } func (self StringFlag) GetPatterns() []string { @@ -99,7 +99,7 @@ type IntFlag struct { } func (self IntFlag) GetName() string { - return self.Name + return self.Name } func (self IntFlag) GetPatterns() []string { @@ -125,3 +125,38 @@ func (self IntFlag) GetParser() Parser { } return ShortCircuitParser{parsers} } + +type StringSliceFlag struct { + Patterns []string + Name string + Description string + DefaultValue []string +} + +func (self StringSliceFlag) GetName() string { + return self.Name +} + +func (self StringSliceFlag) GetPatterns() []string { + return self.Patterns +} + +func (self StringSliceFlag) GetDescription() string { + return self.Description +} + +func (self StringSliceFlag) GetParser() Parser { + var parsers []Parser + for _, p := range self.Patterns { + parsers = append(parsers, StringSliceFlagParser{ + pattern: p, + key: self.Name, + defaultValue: self.DefaultValue, + }) + } + + if len(parsers) == 1 { + return parsers[0] + } + return ShortCircuitParser{parsers} +} -- cgit v1.2.3