heroagent/pkg/heroscript/cmd/fakehandler_start/main.go
2025-04-23 04:18:28 +02:00

76 lines
1.8 KiB
Go

package main
import (
"flag"
"fmt"
"os"
"os/signal"
"syscall"
"github.com/freeflowuniverse/heroagent/pkg/handlerfactory/herohandler"
)
func main() {
// Parse command line flags
socketPath := flag.String("socket", "/tmp/hero.sock", "Unix socket path")
tcpAddress := flag.String("tcp", "localhost:8023", "TCP address")
useUnixSocket := flag.Bool("unix", true, "Use Unix socket")
useTCP := flag.Bool("tcp-enable", false, "Use TCP")
flag.Parse()
// Initialize the hero handler
err := herohandler.Init()
if err != nil {
fmt.Printf("Failed to initialize hero handler: %v\n", err)
os.Exit(1)
}
// Get the default instance
handler := herohandler.DefaultInstance
// The fake handler is already registered in the Init() function
fmt.Println("Using pre-registered fake handler")
// Start the server
if *useUnixSocket || *useTCP {
fmt.Printf("Starting telnet server\n")
var socketPathStr, tcpAddressStr string
if *useUnixSocket {
socketPathStr = *socketPath
fmt.Printf("Unix socket: %s\n", socketPathStr)
}
if *useTCP {
tcpAddressStr = *tcpAddress
fmt.Printf("TCP address: %s\n", tcpAddressStr)
}
err = handler.StartTelnet(socketPathStr, tcpAddressStr)
if err != nil {
fmt.Printf("Failed to start telnet server: %v\n", err)
os.Exit(1)
}
}
// Print available commands
factory := handler.GetFactory()
actions := factory.GetSupportedActions()
fmt.Println("\nAvailable commands:")
for actor, commands := range actions {
fmt.Printf("Actor: %s\n", actor)
for _, command := range commands {
fmt.Printf(" !!%s.%s\n", actor, command)
}
}
fmt.Println("\nServer is running. Press Ctrl+C to stop.")
// Wait for interrupt signal
sigCh := make(chan os.Signal, 1)
signal.Notify(sigCh, syscall.SIGINT, syscall.SIGTERM)
<-sigCh
fmt.Println("\nShutting down...")
handler.StopTelnet()
fmt.Println("Server stopped")
}