diff options
| author | Petter Rasmussen | 2016-01-11 21:36:33 +0100 | 
|---|---|---|
| committer | Petter Rasmussen | 2016-01-16 22:09:45 +0100 | 
| commit | 137298be0c1ec3e95825971fa25f0877ec884ad4 (patch) | |
| tree | 05a9c5950df2adddae5818bfad7699bd9bc07ebe /cli/flags.go | |
| parent | 3c7e4127ab7722146ab688dbe0c39e73d8a08b8b (diff) | |
| download | gdrive-137298be0c1ec3e95825971fa25f0877ec884ad4.tar.bz2 | |
Basic list and download support
Diffstat (limited to 'cli/flags.go')
| -rw-r--r-- | cli/flags.go | 132 | 
1 files changed, 132 insertions, 0 deletions
| diff --git a/cli/flags.go b/cli/flags.go new file mode 100644 index 0000000..a5aa276 --- /dev/null +++ b/cli/flags.go @@ -0,0 +1,132 @@ +package cli + +// TODO +// Default values? Default string values? Parser must always return a value +// Support invalid flag combinations? + + +type Flag interface { +    GetPatterns() []string +    GetName() string +    GetDescription() string +    GetParser() Parser +} + +func getFlagParser(flags []Flag) Parser { +    var parsers []Parser + +    for _, flag := range flags { +        parsers = append(parsers, flag.GetParser()) +    } + +    return FlagParser{parsers} +} + + +type BoolFlag struct { +    Patterns []string +    Name string +    Description string +    DefaultValue bool +    OmitValue bool +} + +func (self BoolFlag) GetName() string { +    return self.Name     +} + +func (self BoolFlag) GetPatterns() []string { +    return self.Patterns +} + +func (self BoolFlag) GetDescription() string { +    return self.Description +} + +func (self BoolFlag) GetParser() Parser { +    var parsers []Parser +    for _, p := range self.Patterns { +        parsers = append(parsers, BoolFlagParser{ +            pattern: p, +            key: self.Name, +            omitValue: self.OmitValue, +            defaultValue: self.DefaultValue, +        }) +    } + +    if len(parsers) == 1 { +        return parsers[0] +    } +    return ShortCircuitParser{parsers} +} + + +type StringFlag struct { +    Patterns []string +    Name string +    Description string +    DefaultValue string +} + +func (self StringFlag) GetName() string { +    return self.Name     +} + +func (self StringFlag) GetPatterns() []string { +    return self.Patterns +} + +func (self StringFlag) GetDescription() string { +    return self.Description +} + +func (self StringFlag) GetParser() Parser { +    var parsers []Parser +    for _, p := range self.Patterns { +        parsers = append(parsers, StringFlagParser{ +            pattern: p, +            key: self.Name, +            defaultValue: self.DefaultValue, +        }) +    } + +    if len(parsers) == 1 { +        return parsers[0] +    } +    return ShortCircuitParser{parsers} +} + +type IntFlag struct { +    Patterns []string +    Name string +    Description string +    DefaultValue int64 +} + +func (self IntFlag) GetName() string { +    return self.Name     +} + +func (self IntFlag) GetPatterns() []string { +    return self.Patterns +} + +func (self IntFlag) GetDescription() string { +    return self.Description +} + +func (self IntFlag) GetParser() Parser { +    var parsers []Parser +    for _, p := range self.Patterns { +        parsers = append(parsers, IntFlagParser{ +            pattern: p, +            key: self.Name, +            defaultValue: self.DefaultValue, +        }) +    } + +    if len(parsers) == 1 { +        return parsers[0] +    } +    return ShortCircuitParser{parsers} +} | 
