workin on migr8 fix double def name
This commit is contained in:
87
cli/cli.go
Executable file
87
cli/cli.go
Executable file
@@ -0,0 +1,87 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"fmt"
|
||||
"local/args"
|
||||
"local/storage"
|
||||
"log"
|
||||
"os"
|
||||
"strings"
|
||||
"time"
|
||||
)
|
||||
|
||||
func main() {
|
||||
as := args.NewArgSet()
|
||||
as.Append(args.STRING, "addr", "addr of store", "localhost:8102")
|
||||
as.Append(args.STRING, "db", "type of store", "dynomite")
|
||||
as.Append(args.STRING, "user", "user of store", "")
|
||||
as.Append(args.STRING, "pass", "pass of store", "")
|
||||
as.Append(args.STRING, "do", "[get set]", "get")
|
||||
as.Append(args.STRING, "k", "key", "key")
|
||||
as.Append(args.STRING, "v", "value", "value")
|
||||
as.Append(args.STRING, "ns", "namespace", "")
|
||||
as.Append(args.STRING, "min", "min key to list", "---")
|
||||
as.Append(args.STRING, "max", "max key to list", "}}}")
|
||||
if err := as.Parse(); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
db, err := storage.New(
|
||||
storage.TypeFromString(as.Get("db").GetString()),
|
||||
as.Get("addr").GetString(),
|
||||
as.Get("user").GetString(),
|
||||
as.Get("pass").GetString(),
|
||||
)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
start := time.Now()
|
||||
var b []byte
|
||||
switch strings.ToLower(as.Get("do").GetString()) {
|
||||
case "list":
|
||||
var c []string
|
||||
ns := strings.Split(as.Get("ns").GetString(), " ")
|
||||
c, err = db.List(ns, as.Get("min").GetString(), as.Get("max").GetString())
|
||||
d := strings.Join(c, "\n\t")
|
||||
b = []byte(fmt.Sprintf("%s", d))
|
||||
case "get":
|
||||
ns := strings.Split(as.Get("ns").GetString(), " ")
|
||||
b, err = db.Get(as.Get("k").GetString(), ns...)
|
||||
case "set":
|
||||
ns := strings.Split(as.Get("ns").GetString(), " ")
|
||||
err = db.Set(as.Get("k").GetString(), []byte(as.Get("v").GetString()), ns...)
|
||||
case "cli":
|
||||
reader := bufio.NewReader(os.Stdin)
|
||||
for {
|
||||
fmt.Print("> ")
|
||||
line, err := reader.ReadString('\n')
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
s := strings.Split(line, " ")
|
||||
s[len(s)-1] = strings.TrimSpace(s[len(s)-1])
|
||||
for len(s) < 3 {
|
||||
s = append(s, "")
|
||||
}
|
||||
start := time.Now()
|
||||
switch strings.ToLower(s[0]) {
|
||||
case "get":
|
||||
b, err := db.Get(s[1])
|
||||
stop := time.Now()
|
||||
log.Printf("(%v) %v: %s", stop.Sub(start), err, s[1])
|
||||
fmt.Printf("%s", b)
|
||||
case "set":
|
||||
err := db.Set(s[1], []byte(s[2]))
|
||||
stop := time.Now()
|
||||
log.Printf("(%v) %v: %s", stop.Sub(start), err, s[1])
|
||||
}
|
||||
}
|
||||
default:
|
||||
log.Fatal("-do not in [get set]")
|
||||
}
|
||||
stop := time.Now()
|
||||
log.Printf("(%v) %v: %v", stop.Sub(start), err, len(b))
|
||||
fmt.Printf("%s", b)
|
||||
}
|
||||
Reference in New Issue
Block a user