The project requires the following tools. Using ghcup to manage GHC and Cabal is recommended.
- ghc == 9.6.4
- cabal >= 3.10
- python >= 3.9
- conan >= 1.62.0
- cmake >= 3.10
cabal buildThe application provides several interfaces for different use cases.
Runs the game in the terminal for local interaction.
cabal run go-haskell -- cli| Key | Command |
|---|---|
| Esc | Exit |
| f | Place Stone |
| g | Pass |
| k | Move top |
| l | Move right |
| j | Move down |
| h | Move left |
Starts the WebSocket API server.
# Default (localhost:8000)
cabal run go-haskell -- socket
# Custom Host/Port
cabal run go-haskell -- socket 0.0.0.0 9000Starts the REST API server.
# Default (localhost:8000)
cabal run go-haskell -- rest
# Custom Port
cabal run go-haskell -- rest 9000Tests are managed using Conan.
conan create . go-haskell-socket-api/testing
conan profile update settings.compiler.libcxx=libstdc++11 defaultThe socket server must be running (usually on ws://localhost:8000) before executing tests.
conan test tests GoHaskellSocketApiTest/0.0.1@go-haskell-socket-api/testingdocker run -p 8000:8000 --name go-game-socket-server asattelmaier/go-game-socket-server:latestDocker images can be built and pushed to Docker Hub or Google Cloud.
# Docker Hub
docker image build -t asattelmaier/go-game-socket-server:latest -f docker/socket-server/Dockerfile .
# Google Cloud
docker image build -t europe-west1-docker.pkg.dev/PROJECT_ID/go-services/go-game-socket-server:latest -f docker/socket-server/Dockerfile .# Docker Hub
docker push asattelmaier/go-game-socket-server:latest
# Google Cloud
docker push europe-west1-docker.pkg.dev/PROJECT_ID/go-services/go-game-socket-server:latestOnly UNIX and UNIX-like operating systems are supported.