a geicko-2 based round robin ranking system designed to test c++ battleship submissions battleship.dunkirk.sh

fix: use BATTLESHIP_EXTERNAL_URL for SSH upload instructions

dunkirk.sh 35860410 9964c20e

verified
Changed files
+23 -6
internal
tui
+23 -6
internal/tui/model.go
···
import (
"fmt"
+
"os"
"strings"
"time"
···
"github.com/charmbracelet/lipgloss"
"battleship-arena/internal/storage"
-
)
-
-
const (
-
sshPort = "2222"
-
host = "0.0.0.0"
)
var titleStyle = lipgloss.NewStyle().
···
submissions []storage.Submission
leaderboard []storage.LeaderboardEntry
matches []storage.MatchResult
+
externalURL string
+
sshPort string
}
func InitialModel(username string, width, height int) model {
+
externalURL := os.Getenv("BATTLESHIP_EXTERNAL_URL")
+
if externalURL == "" {
+
externalURL = "localhost"
+
}
+
// Strip http:// or https:// prefix to get just the hostname
+
externalURL = strings.TrimPrefix(externalURL, "http://")
+
externalURL = strings.TrimPrefix(externalURL, "https://")
+
// Strip port if present
+
if idx := strings.Index(externalURL, ":"); idx != -1 {
+
externalURL = externalURL[:idx]
+
}
+
+
sshPort := os.Getenv("BATTLESHIP_SSH_PORT")
+
if sshPort == "" {
+
sshPort = "2222"
+
}
+
return model{
username: username,
width: width,
height: height,
submissions: []storage.Submission{},
leaderboard: []storage.LeaderboardEntry{},
+
externalURL: externalURL,
+
sshPort: sshPort,
}
}
···
// Upload instructions
infoStyle := lipgloss.NewStyle().Foreground(lipgloss.Color("86"))
-
b.WriteString(infoStyle.Render(fmt.Sprintf("Upload via: scp -P %s memory_functions_yourname.cpp %s@%s:~/", sshPort, m.username, host)))
+
b.WriteString(infoStyle.Render(fmt.Sprintf("Upload via: scp -P %s memory_functions_yourname.cpp %s@%s:~/", m.sshPort, m.username, m.externalURL)))
b.WriteString("\n\n")
// Show submissions