package main import ( "context" "log" "os" "os/signal" "syscall" "tipsy.codes/charles/mc-god/v2/internal/pkg/rcon" ) func main() { // Create a context that will be cancelled on interrupt signals 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) go func() { <-sigChan log.Println("Received interrupt signal, shutting down...") cancel() }() // Create RCON client from environment variables log.Println("Connecting to Minecraft server via RCON...") client, err := rcon.NewFromEnv() if err != nil { log.Fatalf("Failed to create RCON client: %v", err) } defer func() { if err := client.Close(); err != nil { log.Printf("Error closing RCON connection: %v", err) } }() // Perform a health check log.Println("Performing health check...") if err := client.HealthCheck(); err != nil { log.Fatalf("Health check failed: %v", err) } log.Println("Connected successfully!") }