...
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