diff --git a/.gitignore b/.gitignore index ec3512e..1b8a62c 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ node_modules/ dist/ frontend/dist/ backend/embed/dist/ +bin/ *.exe *.test diff --git a/Makefile b/Makefile index 200d434..0699e1e 100644 --- a/Makefile +++ b/Makefile @@ -7,6 +7,11 @@ CFG_DIR ?= ../dev-deploy/serverfiles/cfg PROFILES_DIR ?= ../dev-deploy/serverfiles/profiles DATA_DIR ?= ../dev-deploy/data +# Server/steamcmd overrides — set to use stubs in dev +SERVER_BINARY ?= arma3server_x64 +SERVER_PARAMS ?= -server -world=empty -loadMissionToMemory -noPause +STEAMCMD_PATH ?= steamcmd + backend: cd backend && go build -o arma3-web-server ./cmd/server/ @@ -22,17 +27,19 @@ copyfrontend: build: frontend copyfrontend backend run: - cd backend && SERVERFILE_DIR=$(SERVERFILE_DIR) MODS_DIR=$(MODS_DIR) CFG_DIR=$(CFG_DIR) PROFILES_DIR=$(PROFILES_DIR) DATA_DIR=$(DATA_DIR) GIN_MODE=debug go run ./cmd/server/ + cd backend && SERVERFILE_DIR=$(SERVERFILE_DIR) MODS_DIR=$(MODS_DIR) CFG_DIR=$(CFG_DIR) PROFILES_DIR=$(PROFILES_DIR) DATA_DIR=$(DATA_DIR) SERVER_BINARY=$(SERVER_BINARY) SERVER_PARAMS="$(SERVER_PARAMS)" STEAMCMD_PATH=$(STEAMCMD_PATH) GIN_MODE=debug go run ./cmd/server/ dev: - mkdir -p backend/embed/dist + mkdir -p backend/embed/dist bin test -f backend/embed/dist/dev.txt || touch backend/embed/dist/dev.txt - cd backend && SERVERFILE_DIR=$(SERVERFILE_DIR) MODS_DIR=$(MODS_DIR) CFG_DIR=$(CFG_DIR) PROFILES_DIR=$(PROFILES_DIR) DATA_DIR=$(DATA_DIR) GIN_MODE=debug go run ./cmd/server/ & + cp backend/internal/services/testdata/arma3server_x64 $(SERVERFILE_DIR)/ + cp backend/internal/services/testdata/steamcmd bin/ + cd backend && PATH=$(CURDIR)/bin:$$PATH SERVERFILE_DIR=$(SERVERFILE_DIR) MODS_DIR=$(MODS_DIR) CFG_DIR=$(CFG_DIR) PROFILES_DIR=$(PROFILES_DIR) DATA_DIR=$(DATA_DIR) SERVER_BINARY=$(SERVER_BINARY) SERVER_PARAMS="$(SERVER_PARAMS)" STEAMCMD_PATH=$(CURDIR)/bin/steamcmd GIN_MODE=debug go run ./cmd/server/ & cd frontend && npm run dev clean: rm -f backend/arma3-web-server - rm -rf frontend/dist backend/embed/dist + rm -rf frontend/dist backend/embed/dist bin test-backend: cd backend && go test ./... diff --git a/backend/internal/services/server_process.go b/backend/internal/services/server_process.go index f201231..9015880 100644 --- a/backend/internal/services/server_process.go +++ b/backend/internal/services/server_process.go @@ -85,9 +85,16 @@ func (pm *ProcessManager) Start() error { return fmt.Errorf("save was_running: %w", err) } - binName := "arma3server_x64" - if s.Platform == "windows" { - binName = "arma3server_x64.exe" + if env := os.Getenv("SERVER_PARAMS"); env != "" { + s.ServerParameters = env + } + + binName := os.Getenv("SERVER_BINARY") + if binName == "" { + binName = "arma3server_x64" + if s.Platform == "windows" { + binName = "arma3server_x64.exe" + } } binPath := filepath.Join(pm.serverfileDir, binName) diff --git a/backend/internal/services/steamcmd.go b/backend/internal/services/steamcmd.go index b961392..8ab906e 100644 --- a/backend/internal/services/steamcmd.go +++ b/backend/internal/services/steamcmd.go @@ -90,7 +90,11 @@ func (s *SteamCmdManager) run(label string, args []string) error { s.streamer.Broadcast("steamcmd", "[STEAMCMD] "+label+" starting...") - cmd := exec.CommandContext(ctx, "steamcmd", args...) + steamcmdPath := os.Getenv("STEAMCMD_PATH") + if steamcmdPath == "" { + steamcmdPath = "steamcmd" + } + cmd := exec.CommandContext(ctx, steamcmdPath, args...) stdout, err := cmd.StdoutPipe() if err != nil {