summaryrefslogtreecommitdiff
path: root/pkg/server/server.go
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/server/server.go')
-rw-r--r--pkg/server/server.go27
1 files changed, 2 insertions, 25 deletions
diff --git a/pkg/server/server.go b/pkg/server/server.go
index c389d50..5ca81d1 100644
--- a/pkg/server/server.go
+++ b/pkg/server/server.go
@@ -7,7 +7,6 @@ import (
"io"
"log"
"net"
- "regexp"
"strings"
"sync"
"time"
@@ -60,8 +59,6 @@ type request struct {
type requestError string
-var wordsRe = regexp.MustCompile("[[:^space:]]+")
-
var errNotImplemented = errors.New("not implemented")
func (c *client) String() string {
@@ -208,9 +205,7 @@ func (s *Server) newClient(conn net.Conn) *client {
return c
}
-func (s *Server) Command(query string) error {
- args := wordsRe.FindAllString(query, -1)
-
+func (s *Server) Command(args []string) error {
r := &request{c: &client{s: s}}
r.run(args)
@@ -290,26 +285,8 @@ func (c *client) decode(b []byte) ([]string, error) {
return t, nil
}
-func (r *request) eval(args []string) []string {
- var out []string
-
- for _, s := range args {
- var t string
-
- if strings.HasPrefix(s, ":") {
- t = s[1:]
- } else {
- t = r.c.s.env.Eval(s)
- }
-
- out = append(out, t)
- }
-
- return out
-}
-
func (r *request) parse(args []string) {
- if c, args := getCmd(r.eval(args)); c == nil {
+ if c, args := getCmd(r.c.s.env.EvalStrings(args)); c == nil {
r.Fatal("command not found")
} else {
r.args = args