aboutsummaryrefslogtreecommitdiffstats
path: root/cli/handler.go
diff options
context:
space:
mode:
authorPetter Rasmussen2016-02-06 23:25:29 +0100
committerPetter Rasmussen2016-02-06 23:25:29 +0100
commit0535cc04bc89943cd585f2f4d7f774ec1b8cc683 (patch)
tree4e978e04e8ad059d439e7faaad9de486bdcc81f2 /cli/handler.go
parenta2bb1bb7868f5444119c17ce38102b7370411b87 (diff)
downloadgdrive-0535cc04bc89943cd585f2f4d7f774ec1b8cc683.tar.bz2
Use FlagGroup instead of map
Diffstat (limited to 'cli/handler.go')
-rw-r--r--cli/handler.go32
1 files changed, 27 insertions, 5 deletions
diff --git a/cli/handler.go b/cli/handler.go
index d1d9d6b..b196f53 100644
--- a/cli/handler.go
+++ b/cli/handler.go
@@ -5,13 +5,35 @@ import (
"strings"
)
-type Flags map[string][]Flag
+func NewFlagGroup(name string, flags...Flag) FlagGroup {
+ return FlagGroup{
+ Name: name,
+ Flags: flags,
+ }
+}
+
+type FlagGroup struct {
+ Name string
+ Flags []Flag
+}
+
+type FlagGroups []FlagGroup
+
+func (groups FlagGroups) getFlags(name string) []Flag {
+ for _, group := range groups {
+ if group.Name == name {
+ return group.Flags
+ }
+ }
+
+ return nil
+}
var handlers []*Handler
type Handler struct {
Pattern string
- Flags Flags
+ FlagGroups FlagGroups
Callback func(Context)
Description string
}
@@ -22,7 +44,7 @@ func (self *Handler) getParser() Parser {
for _, pattern := range self.SplitPattern() {
if isOptional(pattern) {
name := optionalName(pattern)
- parser := getFlagParser(self.Flags[name])
+ parser := getFlagParser(self.FlagGroups.getFlags(name))
parsers = append(parsers, parser)
} else if isCaptureGroup(pattern) {
parsers = append(parsers, CaptureGroupParser{pattern})
@@ -50,10 +72,10 @@ func SetHandlers(h []*Handler) {
handlers = h
}
-func AddHandler(pattern string, flags Flags, callback func(Context), desc string) {
+func AddHandler(pattern string, groups FlagGroups, callback func(Context), desc string) {
handlers = append(handlers, &Handler{
Pattern: pattern,
- Flags: flags,
+ FlagGroups: groups,
Callback: callback,
Description: desc,
})