diff options
Diffstat (limited to 'internal/cmd/registry.go')
| -rw-r--r-- | internal/cmd/registry.go | 48 |
1 files changed, 0 insertions, 48 deletions
diff --git a/internal/cmd/registry.go b/internal/cmd/registry.go deleted file mode 100644 index e056469..0000000 --- a/internal/cmd/registry.go +++ /dev/null @@ -1,48 +0,0 @@ -package cmd - -import ( - "fmt" - "strings" -) - -type Handler func(args []string) - -type Command struct { - Name string - Aliases []string - Handler Handler - MinArgs int -} - -type Registry struct { - cmds map[string]Command -} - -func NewRegistry() *Registry { - return &Registry{cmds: make(map[string]Command)} -} - -func (r *Registry) Register(cmd Command) { - r.cmds[cmd.Name] = cmd - for _, a := range cmd.Aliases { - r.cmds[a] = cmd - } -} - -func (r *Registry) Dispatch(input string) error { - parts := strings.Fields(input) - if len(parts) == 0 { - return nil - } - name := strings.ToLower(parts[0]) - cmd, ok := r.cmds[name] - if !ok { - return fmt.Errorf("unknown command: %s", name) - } - args := parts[1:] - if len(args) < cmd.MinArgs { - return fmt.Errorf("usage: %s requires at least %d arguments", cmd.Name, cmd.MinArgs) - } - cmd.Handler(args) - return nil -} |
