Skip to content

Commit 2691c9c

Browse files
committed
refactor(engine): refactor bot engine interface
1 parent 01bb8e0 commit 2691c9c

File tree

10 files changed

+143
-157
lines changed

10 files changed

+143
-157
lines changed

cmd/commands/repl.go

Lines changed: 5 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,9 @@ import (
55
"os"
66
"strings"
77

8-
"github.com/kehiy/RoboPac/client"
98
"github.com/kehiy/RoboPac/config"
109
"github.com/kehiy/RoboPac/engine"
11-
"github.com/kehiy/RoboPac/engine/commands"
1210
"github.com/kehiy/RoboPac/log"
13-
"github.com/kehiy/RoboPac/store"
14-
"github.com/kehiy/RoboPac/wallet"
1511
cobra "github.com/spf13/cobra"
1612
)
1713

@@ -24,55 +20,21 @@ func REPLCommand(parentCmd *cobra.Command) {
2420
}
2521
parentCmd.AddCommand(connect)
2622

27-
localnetOpt := connect.Flags().StringP("localnet", "l", "localhost:8080", "your local-net node address")
2823
envOpt := connect.Flags().StringP("env", "e", ".env.local", "your local/test env file for config")
2924

3025
connect.Run = func(cmd *cobra.Command, args []string) {
31-
log.Info("initializing repl...")
32-
33-
config, err := config.Load(*envOpt)
34-
if err != nil {
35-
log.Panic("can't load config env", "err", err, "path", *envOpt)
36-
}
37-
38-
cm := client.NewClientMgr()
39-
c, err := client.NewClient(*localnetOpt)
40-
if err != nil {
41-
log.Panic("can't make a new local-net client", "err", err, "addr", *localnetOpt)
42-
}
43-
44-
cm.AddClient("local-net", c)
45-
4626
// initializing logger global instance.
4727
log.InitGlobalLogger()
4828

49-
// new subLogger for engine.
50-
eSl := log.NewSubLogger("engine")
51-
52-
// new subLogger for store.
53-
sSl := log.NewSubLogger("store")
54-
55-
// new subLogger for store.
56-
wSl := log.NewSubLogger("wallet")
57-
58-
// load or create wallet.
59-
wallet := wallet.Open(config, wSl)
60-
if wallet == nil {
61-
log.Panic("wallet could not be opened, wallet is nil", "path", config.WalletPath)
62-
}
63-
64-
log.Info("wallet opened successfully", "address", wallet.Address())
29+
log.Info("initializing repl...")
6530

66-
// load store.
67-
store, err := store.LoadStore(config, sSl)
31+
config, err := config.Load(*envOpt)
6832
if err != nil {
69-
log.Panic("could not load store", "err", err, "path", config.StorePath)
33+
log.Panic("can't load config env", "err", err, "path", *envOpt)
7034
}
7135

72-
log.Info("store loaded successfully", "path", config.StorePath)
73-
7436
// starting botEngine.
75-
botEngine, err := engine.NewBotEngine(eSl, cm, wallet, store)
37+
botEngine, err := engine.NewBotEngine(config)
7638
if err != nil {
7739
log.Panic("could not start discord bot", "err", err)
7840
}
@@ -93,8 +55,7 @@ func REPLCommand(parentCmd *cobra.Command) {
9355
return
9456
}
9557

96-
q := commands.ParseQuery(input)
97-
response, err := commands.Execute(q, botEngine)
58+
response, err := botEngine.Run(input)
9859
if err != nil {
9960
cmd.PrintErr(err)
10061
}

cmd/commands/run.go

Lines changed: 6 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,10 @@ import (
55
"os/signal"
66
"syscall"
77

8-
"github.com/kehiy/RoboPac/client"
98
"github.com/kehiy/RoboPac/config"
109
"github.com/kehiy/RoboPac/discord"
1110
"github.com/kehiy/RoboPac/engine"
1211
"github.com/kehiy/RoboPac/log"
13-
"github.com/kehiy/RoboPac/store"
14-
"github.com/kehiy/RoboPac/wallet"
1512
"github.com/spf13/cobra"
1613
)
1714

@@ -23,58 +20,21 @@ func RunCommand(parentCmd *cobra.Command) {
2320
parentCmd.AddCommand(run)
2421

2522
run.Run = func(_ *cobra.Command, _ []string) {
26-
// load configuration.
27-
config, err := config.Load()
28-
if err != nil {
29-
log.Panic("error loading configuration", "err", err)
30-
}
31-
32-
// starting client manager for RPC.
33-
cm := client.NewClientMgr()
34-
35-
for _, rn := range config.RPCNodes {
36-
c, err := client.NewClient(rn)
37-
if err != nil {
38-
log.Error("can't make new client", "RPC Node address", rn)
39-
continue
40-
}
41-
log.Info("connecting to RPC Node", "addr", rn)
42-
cm.AddClient(rn, c)
43-
}
44-
4523
// initializing logger global instance.
4624
log.InitGlobalLogger()
4725

48-
// new subLogger for engine.
49-
eSl := log.NewSubLogger("engine")
50-
51-
// new subLogger for store.
52-
sSl := log.NewSubLogger("store")
53-
54-
// new subLogger for store.
55-
wSl := log.NewSubLogger("wallet")
56-
57-
// load or create wallet.
58-
wallet := wallet.Open(config, wSl)
59-
if wallet == nil {
60-
log.Panic("wallet could not be opened, wallet is nil", "path", config.WalletPath)
61-
}
62-
63-
log.Info("wallet opened successfully", "address", wallet.Address())
64-
65-
// load store.
66-
store, err := store.LoadStore(config, sSl)
26+
// load configuration.
27+
config, err := config.Load()
6728
if err != nil {
68-
log.Panic("could not load store", "err", err, "path", config.StorePath)
29+
log.Panic("error loading configuration", "err", err)
6930
}
7031

71-
log.Info("store loaded successfully", "path", config.StorePath)
72-
7332
// starting botEngine.
74-
botEngine, err := engine.NewBotEngine(eSl, cm, wallet, store)
33+
botEngine, err := engine.NewBotEngine(config)
7534
if err != nil {
76-
log.Panic("could not start bot engine", "err", err)
35+
log.Panic("could not start discord bot", "err", err)
7736
}
37+
7838
botEngine.Start()
7939

8040
discordBot, err := discord.NewDiscordBot(botEngine, config.DiscordBotCfg.DiscordToken,
@@ -90,7 +50,6 @@ func RunCommand(parentCmd *cobra.Command) {
9050

9151
// gracefully shutdown the bot.
9252
discordBot.Stop()
93-
cm.Stop()
9453
botEngine.Stop()
9554
}
9655
}

config/config.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@ type Config struct {
1313
WalletAddress string
1414
WalletPath string
1515
WalletPassword string
16-
RPCNodes []string
16+
NetworkNodes []string
17+
LocalNode string
1718
StorePath string
1819
DiscordBotCfg DiscordBotConfig
1920
}
@@ -34,7 +35,8 @@ func Load(filePaths ...string) (*Config, error) {
3435
WalletAddress: os.Getenv("WALLET_ADDRESS"),
3536
WalletPath: os.Getenv("WALLET_PATH"),
3637
WalletPassword: os.Getenv("WALLET_PASSWORD"),
37-
RPCNodes: strings.Split(os.Getenv("RPC_NODES"), ","),
38+
LocalNode: os.Getenv("LOCAL_NODE"),
39+
NetworkNodes: strings.Split(os.Getenv("NETWORK_NODES"), ","),
3840
StorePath: os.Getenv("STORE_PATH"),
3941
DiscordBotCfg: DiscordBotConfig{
4042
DiscordToken: os.Getenv("DISCORD_TOKEN"),
@@ -61,7 +63,7 @@ func (cfg *Config) BasicCheck() error {
6163
return fmt.Errorf("WALLET_PATH does not exist")
6264
}
6365

64-
if len(cfg.RPCNodes) == 0 {
66+
if len(cfg.NetworkNodes) == 0 {
6567
return fmt.Errorf("RPCNODES is not set or incorrect")
6668
}
6769

config/config_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ func TestBasicCheck(t *testing.T) {
2424
WalletAddress: "test_wallet_address",
2525
WalletPath: tempWalletPath, // Use the temporary directory
2626
WalletPassword: "test_password",
27-
RPCNodes: []string{"http://127.0.0.1:8545"},
27+
NetworkNodes: []string{"http://127.0.0.1:8545"},
2828
StorePath: tempStorePath, // Use the temporary directory
2929
DiscordBotCfg: DiscordBotConfig{
3030
DiscordToken: "MTEabc123",
@@ -39,7 +39,7 @@ func TestBasicCheck(t *testing.T) {
3939
WalletAddress: "test_wallet_address",
4040
WalletPath: "/valid/path",
4141
WalletPassword: "test_password",
42-
RPCNodes: []string{},
42+
NetworkNodes: []string{},
4343
StorePath: "/valid/storepath",
4444
DiscordBotCfg: DiscordBotConfig{
4545
DiscordToken: "MTEabc123",

discord/discord.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@ import (
88

99
type DiscordBot struct {
1010
Session *discordgo.Session
11-
BotEngine engine.Engine
11+
BotEngine engine.IEngine
1212
GuildID string
1313
}
1414

15-
func NewDiscordBot(botEngine engine.Engine, token, guildID string) (*DiscordBot, error) {
15+
func NewDiscordBot(botEngine engine.IEngine, token, guildID string) (*DiscordBot, error) {
1616
s, err := discordgo.New("Bot " + token)
1717
if err != nil {
1818
return nil, err

engine/commands/execute.go

Lines changed: 16 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,18 @@
11
package commands
22

3-
import (
4-
"errors"
5-
6-
"github.com/kehiy/RoboPac/engine"
7-
)
8-
9-
func Execute(q Query, be engine.Engine) (interface{}, error) {
10-
switch q.Cmd {
11-
case "health":
12-
return be.NetworkHealth(q.Tokens)
13-
case "node-info":
14-
return be.NodeInfo(q.Tokens)
15-
case "claim":
16-
return be.Claim(q.Tokens)
17-
case "me":
18-
return be.ClaimerInfo(q.Tokens)
19-
case "network":
20-
return be.NetworkStatus(q.Tokens)
21-
default:
22-
return nil, errors.New("invalid command")
23-
}
24-
}
3+
// func Execute(q Query, be engine.IEngine) (interface{}, error) {
4+
// switch q.Cmd {
5+
// case "health":
6+
// return be.NetworkHealth(q.Tokens)
7+
// case "node-info":
8+
// return be.NodeInfo(q.Tokens)
9+
// case "claim":
10+
// return be.Claim(q.Tokens)
11+
// case "me":
12+
// return be.ClaimerInfo(q.Tokens)
13+
// case "network":
14+
// return be.NetworkStatus(q.Tokens)
15+
// default:
16+
// return nil, errors.New("invalid command")
17+
// }
18+
// }

0 commit comments

Comments
 (0)