Files
mc-god/cmd/mcgod/main.go

46 lines
1.0 KiB
Go
Raw Normal View History

2026-02-12 18:59:15 -08:00
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!")
}