...
This commit is contained in:
@@ -5,49 +5,72 @@ import (
|
||||
"fmt"
|
||||
"log"
|
||||
"os"
|
||||
"strconv"
|
||||
|
||||
"git.ourworld.tf/herocode/heroagent/pkg/heroagent"
|
||||
"git.ourworld.tf/herocode/heroagent/pkg/servers/ui" // Import the new UI package
|
||||
"git.ourworld.tf/herocode/heroagent/pkg/servers/heroagent"
|
||||
)
|
||||
|
||||
func main() {
|
||||
// Parse command-line flags
|
||||
portFlag := flag.String("port", "", "Port to run the HeroLauncher on")
|
||||
uiPortFlag := flag.String("uiport", "3000", "Port to run the UI server on") // New flag for UI port
|
||||
redisPortFlag := flag.Int("redisport", 6378, "Port to run the Redis server on")
|
||||
webdavPortFlag := flag.Int("webdavport", 9001, "Port to run the WebDAV server on")
|
||||
uiPortFlag := flag.Int("uiport", 9002, "Port to run the UI server on")
|
||||
|
||||
// Flags to enable/disable specific servers
|
||||
enableRedisFlag := flag.Bool("redis", true, "Enable Redis server")
|
||||
enableWebDAVFlag := flag.Bool("webdav", true, "Enable WebDAV server")
|
||||
enableUIFlag := flag.Bool("ui", true, "Enable UI server")
|
||||
|
||||
flag.Parse()
|
||||
|
||||
// Initialize HeroLauncher with default configuration
|
||||
// Initialize ServerFactory with default configuration
|
||||
config := heroagent.DefaultConfig()
|
||||
|
||||
// Override with command-line flags if provided
|
||||
if *portFlag != "" {
|
||||
config.Port = *portFlag
|
||||
}
|
||||
config.Redis.TCPPort = *redisPortFlag
|
||||
config.WebDAV.Config.TCPPort = *webdavPortFlag
|
||||
config.UI.Port = strconv.Itoa(*uiPortFlag)
|
||||
|
||||
// Set server enable flags
|
||||
config.EnableRedis = *enableRedisFlag
|
||||
config.EnableWebDAV = *enableWebDAVFlag
|
||||
config.EnableUI = *enableUIFlag
|
||||
|
||||
// Override with environment variables if provided
|
||||
if port := os.Getenv("PORT"); port != "" {
|
||||
config.Port = port
|
||||
if redisPortStr := os.Getenv("REDIS_PORT"); redisPortStr != "" {
|
||||
if port, err := strconv.Atoi(redisPortStr); err == nil {
|
||||
config.Redis.TCPPort = port
|
||||
}
|
||||
}
|
||||
if webdavPortStr := os.Getenv("WEBDAV_PORT"); webdavPortStr != "" {
|
||||
if port, err := strconv.Atoi(webdavPortStr); err == nil {
|
||||
config.WebDAV.Config.TCPPort = port
|
||||
}
|
||||
}
|
||||
if uiPort := os.Getenv("UI_PORT"); uiPort != "" {
|
||||
config.UI.Port = uiPort
|
||||
}
|
||||
|
||||
// Create HeroLauncher instance
|
||||
launcher := heroagent.New(config)
|
||||
// Create ServerFactory instance
|
||||
factory := heroagent.New(config)
|
||||
|
||||
// Initialize and start the UI server in a new goroutine
|
||||
go func() {
|
||||
uiApp := ui.NewApp(ui.AppConfig{}) // Assuming default AppConfig is fine
|
||||
uiPort := *uiPortFlag
|
||||
if envUiPort := os.Getenv("UIPORT"); envUiPort != "" {
|
||||
uiPort = envUiPort
|
||||
}
|
||||
fmt.Printf("Starting UI server on port %s...\n", uiPort)
|
||||
if err := uiApp.Listen(":" + uiPort); err != nil {
|
||||
log.Printf("Failed to start UI server: %v", err) // Use Printf to not exit main app
|
||||
}
|
||||
}()
|
||||
|
||||
// Start the main HeroLauncher server
|
||||
fmt.Printf("Starting HeroLauncher on port %s...\n", config.Port)
|
||||
if err := launcher.Start(); err != nil {
|
||||
log.Fatalf("Failed to start HeroLauncher: %v", err)
|
||||
// Start all servers
|
||||
fmt.Println("Starting HeroAgent servers...")
|
||||
if err := factory.Start(); err != nil {
|
||||
log.Fatalf("Failed to start servers: %v", err)
|
||||
}
|
||||
|
||||
fmt.Printf("All servers started successfully:\n")
|
||||
if config.EnableRedis {
|
||||
fmt.Printf("- Redis server running on port %d\n", config.Redis.TCPPort)
|
||||
}
|
||||
if config.EnableWebDAV {
|
||||
fmt.Printf("- WebDAV server running on port %d\n", config.WebDAV.Config.TCPPort)
|
||||
}
|
||||
if config.EnableUI {
|
||||
fmt.Printf("- UI server running on port %s\n", config.UI.Port)
|
||||
}
|
||||
|
||||
// Keep the main goroutine running
|
||||
select {}
|
||||
}
|
||||
|
Reference in New Issue
Block a user