package main import ( "fmt" "log" "os" "os/signal" "path/filepath" "syscall" ) func main() { fmt.Println("Initializing VS server manager...") home, err := os.UserHomeDir() if err != nil { log.Fatalf("Could not locate user home dir") } configPath := filepath.Join(home, ".config", "vs-manager", "config.json") cfg, err := LoadOrCreateConfig(configPath) if err != nil { log.Fatalf("Initialization failed: %v", err) } instanceName := "sample_server" targetVersion := "1.22.3" options := VsServerConfigOptions{ ServerName: "Sample Server", Port: 4000, MaxClients: 100, Password: "", } err = DownloadAndExtractServer(targetVersion, cfg.Storage.InstallDir) if err != nil { log.Fatalf("Downloader module encountered an error: %v", err) } err = CreateNewInstance(instanceName, targetVersion, options, cfg) if err != nil { log.Fatalf("Initialization abort: %v", err) } procManager := NewProcessManager() fmt.Printf("\n⚡ Launching Instance: %s (v%s)\n", instanceName, targetVersion) err = procManager.StartInstance(instanceName, targetVersion, options, cfg) if err != nil { log.Fatalf("Process startup failed: %v", err) } sigChan := make(chan os.Signal, 1) signal.Notify(sigChan, os.Interrupt, syscall.SIGTERM) fmt.Println("\nServer running. Press Ctrl+C to cleanly shut down...") <-sigChan fmt.Println("\n\nTriggering graceful server termination sequence...") _ = procManager.SendCommand(instanceName, "stop") fmt.Println("Manager exited successfully.") }