Skip to content

Commit

Permalink
feat: refactor cli(#149)
Browse files Browse the repository at this point in the history
  • Loading branch information
sjcsjc123 committed Jul 4, 2023
1 parent c5d03ce commit cc4f2cc
Show file tree
Hide file tree
Showing 10 changed files with 120 additions and 169 deletions.
44 changes: 0 additions & 44 deletions cmd/app.go

This file was deleted.

10 changes: 0 additions & 10 deletions cmd/cli/flydb.go

This file was deleted.

75 changes: 44 additions & 31 deletions cmd/client/app.go
Original file line number Diff line number Diff line change
@@ -1,39 +1,52 @@
package client

import "github.com/desertbit/grumble"
import (
"errors"
"fmt"
"github.com/desertbit/grumble"
"github.com/fatih/color"
"os"
"path"
"strings"
)

func Register(app *grumble.App) {
app.AddCommand(&grumble.Command{
Name: "put",
Help: "put data",
Run: putData,
Args: func(a *grumble.Args) {
a.String("key", "key", grumble.Default(""))
a.String("value", "value", grumble.Default(""))
},
})
var addr string

app.AddCommand(&grumble.Command{
Name: "get",
Help: "get data",
Run: getData,
Args: func(a *grumble.Args) {
a.String("key", "key", grumble.Default(""))
},
})
// App FlyDB command app
var App = grumble.New(&grumble.Config{
Name: "FlyDB Cli",
Description: "A command of FlyDB",
HistoryFile: path.Join(os.TempDir(), ".FlyDB_Cli.history"),
HistoryLimit: 10000,
ErrorColor: color.New(color.FgRed, color.Bold, color.Faint),
HelpHeadlineColor: color.New(color.FgGreen),
HelpHeadlineUnderline: false,
HelpSubCommands: true,
Prompt: "flydb $> ",
PromptColor: color.New(color.FgBlue, color.Bold),
Flags: func(f *grumble.Flags) {},
})

app.AddCommand(&grumble.Command{
Name: "delete",
Help: "delete key",
Run: deleteKey,
Args: func(a *grumble.Args) {
a.String("key", "key", grumble.Default(""))
},
func init() {
App.OnInit(func(a *grumble.App, fm grumble.FlagMap) error {
if len(os.Args) != 1 {
fmt.Println("usage: flydb-cli [addr]")
return errors.New("usage: flydb-cli [addr]")
}
addr = os.Args[1]
return nil
})

app.AddCommand(&grumble.Command{
Name: "keys",
Help: "list keys",
Run: getKeys,
App.SetPrintASCIILogo(func(a *grumble.App) {
fmt.Println(strings.Join([]string{`
______ __ ____ ____
/ ____/ / / __ __ / __ \ / __ )
/ / / / / / / / / / / / / /_/ /
/ /_ / / / / / / / / / / / __ |
/ __/ / / / /_/ / / / / / / / / /
/ / / / \__, / / /_/ / / /_/ /
/_/ /_/ ,__/ / /_____/ /_____/
/____/
`}, "\r\n"))
})
register(App)
}
11 changes: 11 additions & 0 deletions cmd/client/cli/flydb-client.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package main

import (
"github.com/ByteStorage/FlyDB/cmd/client"
"github.com/desertbit/grumble"
)

func main() {
// start client CLI
grumble.Main(client.App)
}
6 changes: 0 additions & 6 deletions cmd/client/client.go

This file was deleted.

35 changes: 15 additions & 20 deletions cmd/data.go → cmd/client/data.go
Original file line number Diff line number Diff line change
@@ -1,22 +1,25 @@
package cmd
package client

import (
"fmt"
"github.com/ByteStorage/FlyDB/engine/grpc/client"
"github.com/desertbit/grumble"
)

func newClient() *client.Client {
return &client.Client{
Addr: addr,
}
}

func putData(c *grumble.Context) error {
key := c.Args.String("key")
value := c.Args.String("value")
if key == "" || value == "" {
fmt.Println("key or value is empty")
return nil
}
if db == nil {
fmt.Println("start server first")
return nil
}
err := db.Put([]byte(key), []byte(value))
err := newClient().Put([]byte(key), []byte(value))
if err != nil {
fmt.Println("put data error: ", err)
return err
Expand All @@ -31,11 +34,7 @@ func getData(c *grumble.Context) error {
fmt.Println("key is empty")
return nil
}
if db == nil {
fmt.Println("start server first")
return nil
}
value, err := db.Get([]byte(key))
value, err := newClient().Get([]byte(key))
if err != nil {
fmt.Println("get data error: ", err)
return err
Expand All @@ -50,11 +49,7 @@ func deleteKey(c *grumble.Context) error {
fmt.Println("key is empty")
return nil
}
if db == nil {
fmt.Println("start server first")
return nil
}
err := db.Delete([]byte(key))
err := newClient().Del([]byte(key))
if err != nil {
fmt.Println("delete key error: ", err)
return err
Expand All @@ -64,11 +59,11 @@ func deleteKey(c *grumble.Context) error {
}

func getKeys(c *grumble.Context) error {
if db == nil {
fmt.Println("start server first")
return nil
list, err := newClient().Keys()
if err != nil {
fmt.Println("get keys error: ", err)
return err
}
list := db.GetListKeys()
fmt.Println("Total keys: ", len(list))
for i, bytes := range list {
fmt.Printf(string(bytes[:]) + "\t")
Expand Down
25 changes: 2 additions & 23 deletions cmd/root.go → cmd/client/root.go
Original file line number Diff line number Diff line change
@@ -1,28 +1,8 @@
package cmd
package client

import (
"github.com/desertbit/grumble"
)
import "github.com/desertbit/grumble"

func register(app *grumble.App) {
app.AddCommand(&grumble.Command{
Name: "start",
Help: "start server",
Run: startServer,
})

app.AddCommand(&grumble.Command{
Name: "stop",
Help: "stop server",
Run: stopServer,
})

app.AddCommand(&grumble.Command{
Name: "clean",
Help: "clean server",
Run: cleanServer,
})

app.AddCommand(&grumble.Command{
Name: "put",
Help: "put data",
Expand Down Expand Up @@ -56,5 +36,4 @@ func register(app *grumble.App) {
Help: "list keys",
Run: getKeys,
})

}
33 changes: 0 additions & 33 deletions cmd/server.go

This file was deleted.

27 changes: 27 additions & 0 deletions cmd/server/cli/flydb-server.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package main

import (
"fmt"
"github.com/ByteStorage/FlyDB/cmd/server"
"os"
)

func main() {
args := os.Args
if len(args) >= 2 {
fmt.Println("Usage: flydb-server [start|clean|stop]")
return
}
if len(args) == 1 {
//start server
server.StartServer()
}
switch args[1] {
case "start":
server.StartServer()
case "stop":
server.StopServer()
case "clean":
server.CleanServer()
}
}
23 changes: 21 additions & 2 deletions cmd/server/server.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,25 @@
package server

// startDbServer starts a db server.
func startDbServer() {
import (
"fmt"
"github.com/ByteStorage/FlyDB/config"
"github.com/ByteStorage/FlyDB/flydb"
)

func StartServer() {
options := config.DefaultOptions
_, err := flydb.NewFlyDB(options)
if err != nil {
fmt.Println("flydb start error: ", err)
return
}
fmt.Println("flydb start success")
}

func StopServer() {
panic("implement me")
}

func CleanServer() {
panic("implement me")
}

0 comments on commit cc4f2cc

Please sign in to comment.