Add additional project structure, config, Docker support, and more prompt files

This commit is contained in:
Krypto Kajun
2025-09-12 01:21:50 -05:00
parent ba80b273e4
commit c5843a5667
17 changed files with 762 additions and 23 deletions

View File

@@ -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
}