From 1ab2dee3bffe92303b30faf205a6495e5bd00aaa Mon Sep 17 00:00:00 2001 From: steven carpenter Date: Mon, 30 Jun 2025 17:19:23 -0400 Subject: [PATCH] fix bugs related to vendoring --- main.go | 82 ++++++++++++++++++++------------------------------------- 1 file changed, 29 insertions(+), 53 deletions(-) diff --git a/main.go b/main.go index 1e0e8da..3c9dc91 100644 --- a/main.go +++ b/main.go @@ -8,7 +8,6 @@ import ( "os" "os/exec" "strings" - "time" "git.skdevstudios.com/specCon18/reforgerds-updater/internal/a2s" ) @@ -22,9 +21,6 @@ type Update struct { const ( updateURL = "http://127.0.0.1:3000/updates" stateFilePath = "latest_version.txt" - - serverIP = "127.0.0.1" - serverPort = 17777 ) func main() { @@ -59,47 +55,50 @@ func main() { if prevVersion == "" { fmt.Println("No previous version found. Storing latest:", latest) _ = os.WriteFile(stateFilePath, []byte(latest), 0644) - return + prevVersion = latest } if versionCompare(latest, prevVersion) > 0 { fmt.Printf("New version found! %s > %s\n", latest, prevVersion) - // Always update the state file - err := os.WriteFile(stateFilePath, []byte(latest), 0644) - if err != nil { - fmt.Printf("Failed to write version file: %v\n", err) - } - - // Check for online players - players, err := fetchPlayers(serverIP, serverPort) - if err != nil { - fmt.Printf("Error checking players: %v\n", err) - return - } - - if len(players) > 0 { - fmt.Printf("Players are currently online (%d):\n", len(players)) - for _, p := range players { - fmt.Printf("- %-16s | Score: %d | Time: %s\n", p.Name, p.Score, formatDuration(p.Duration)) - } - fmt.Println("Skipping update while players are online.") - return - } - - // No players — run steamcmd - fmt.Println("No players online. Running update command...") + fmt.Println("Running update command...") cmd := exec.Command("./steamcmd.sh", "+runscript", "reforger_update") cmd.Stdout = os.Stdout cmd.Stderr = os.Stderr - err = cmd.Run() + err := cmd.Run() if err != nil { fmt.Printf("Update command failed: %v\n", err) return } + + _ = os.WriteFile(stateFilePath, []byte(latest), 0644) + prevVersion = latest } else { fmt.Printf("No new version. Latest seen: %s\n", prevVersion) } + + // Always check and print players online + client, err := a2s.New("127.0.0.1", 17777) // Adjust IP/port if needed + if err != nil { + fmt.Printf("Failed to create A2S client: %v\n", err) + return + } + defer client.Close() + + players, err := client.GetPlayers() + if err != nil { + fmt.Printf("Failed to get players: %v\n", err) + return + } + + if players == nil || len(*players) == 0 { + fmt.Println("No players online.") + } else { + fmt.Printf("Players online:\n") + for _, p := range *players { + fmt.Printf(" - Name: %s, Score: %d, Duration: %s\n", p.Name, p.Score, p.Duration) + } + } } func versionCompare(a, b string) int { @@ -130,26 +129,3 @@ func versionCompare(a, b string) int { return 0 } -func fetchPlayers(ip string, port int) ([]a2s.Player, error) { - client, err := a2s.New(ip, port) - if err != nil { - return nil, fmt.Errorf("create client: %w", err) - } - defer client.Close() - - client.SetBufferSize(2048) - client.SetDeadlineTimeout(3) - - players, err := client.GetPlayers() - if err != nil { - return nil, fmt.Errorf("get players: %w", err) - } - - return *players, nil -} - -func formatDuration(d time.Duration) string { - minutes := int(d.Minutes()) - seconds := int(d.Seconds()) % 60 - return fmt.Sprintf("%02d:%02d", minutes, seconds) -}