Add additional project structure, config, Docker support, and more prompt files
This commit is contained in:
@@ -1,11 +1,18 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log"
|
||||
"os"
|
||||
"os/signal"
|
||||
"syscall"
|
||||
"time"
|
||||
|
||||
"github.com/urfave/cli/v2"
|
||||
"github.com/your-username/mev-beta/internal/config"
|
||||
"github.com/your-username/mev-beta/internal/logger"
|
||||
"github.com/your-username/mev-beta/pkg/monitor"
|
||||
)
|
||||
|
||||
func main() {
|
||||
@@ -17,9 +24,7 @@ func main() {
|
||||
Name: "start",
|
||||
Usage: "Start the MEV bot",
|
||||
Action: func(c *cli.Context) error {
|
||||
fmt.Println("Starting MEV bot...")
|
||||
// TODO: Implement bot start logic
|
||||
return nil
|
||||
return startBot()
|
||||
},
|
||||
},
|
||||
{
|
||||
@@ -37,4 +42,53 @@ func main() {
|
||||
if err := app.Run(os.Args); err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
}
|
||||
|
||||
func startBot() error {
|
||||
// Load configuration
|
||||
cfg, err := config.Load("config/config.yaml")
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to load config: %w", err)
|
||||
}
|
||||
|
||||
// Initialize logger
|
||||
log := logger.New(cfg.Log.Level, cfg.Log.Format, cfg.Log.File)
|
||||
|
||||
log.Info("Starting MEV bot...")
|
||||
|
||||
// Create Arbitrum monitor
|
||||
monitor, err := monitor.NewArbitrumMonitor(cfg.Arbitrum.RPCEndpoint, time.Duration(cfg.Bot.PollingInterval)*time.Second)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to create Arbitrum monitor: %w", err)
|
||||
}
|
||||
|
||||
// Set up context with cancellation
|
||||
ctx, cancel := context.WithCancel(context.Background())
|
||||
defer cancel()
|
||||
|
||||
// Set up signal handling for graceful shutdown
|
||||
sigChan := make(chan os.Signal, 1)
|
||||
signal.Notify(sigChan, syscall.SIGINT, syscall.SIGTERM)
|
||||
|
||||
// Start monitoring in a goroutine
|
||||
go func() {
|
||||
if err := monitor.Start(ctx); err != nil {
|
||||
log.Error("Monitor error: ", err)
|
||||
}
|
||||
}()
|
||||
|
||||
log.Info("MEV bot started. Press Ctrl+C to stop.")
|
||||
|
||||
// Wait for signal
|
||||
<-sigChan
|
||||
log.Info("Received shutdown signal...")
|
||||
|
||||
// Cancel context to stop monitor
|
||||
cancel()
|
||||
|
||||
// Stop the monitor
|
||||
monitor.Stop()
|
||||
|
||||
log.Info("MEV bot stopped.")
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user