chore(meta): add top-level Makefile for dev workflow
Targets: setup, build, client, server, test, lint, ci, ci-server, ci-client, clean. Rust targets delegate to cargo, Godot targets auto-detect godot4/godot on PATH. Client lint and test targets stubbed pending gdUnit4 and gdlint integration. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,96 @@
|
||||
.PHONY: help setup build client server test lint ci ci-client ci-server clean
|
||||
|
||||
# Default
|
||||
help:
|
||||
@echo "The Settled Reach — Development Commands"
|
||||
@echo ""
|
||||
@echo " make setup Install dev dependencies (Rust, Godot, tooling)"
|
||||
@echo " make build Build client and server"
|
||||
@echo " make client Run the Godot client"
|
||||
@echo " make server Run the Rust simulation server"
|
||||
@echo " make test Run all tests"
|
||||
@echo " make lint Run all linters"
|
||||
@echo " make ci Run full CI pipeline locally"
|
||||
@echo " make ci-client Run client CI checks"
|
||||
@echo " make ci-server Run server CI checks"
|
||||
@echo " make clean Remove build artifacts and caches"
|
||||
|
||||
# --- Setup ---
|
||||
|
||||
setup: setup-rust setup-godot setup-tooling
|
||||
@echo "Dev environment ready."
|
||||
|
||||
setup-rust:
|
||||
@echo "Checking Rust toolchain..."
|
||||
@command -v cargo >/dev/null 2>&1 || { echo "Install Rust: https://rustup.rs"; exit 1; }
|
||||
@rustup component add clippy rustfmt
|
||||
|
||||
setup-godot:
|
||||
@echo "Checking Godot..."
|
||||
@command -v godot4 >/dev/null 2>&1 || command -v godot >/dev/null 2>&1 || { echo "Install Godot 4: https://godotengine.org"; exit 1; }
|
||||
|
||||
setup-tooling:
|
||||
@echo "Checking tooling dependencies..."
|
||||
@command -v python3 >/dev/null 2>&1 || { echo "Install Python 3"; exit 1; }
|
||||
|
||||
# --- Build ---
|
||||
|
||||
build: build-server build-client
|
||||
|
||||
build-server:
|
||||
cd server && cargo build
|
||||
|
||||
build-client:
|
||||
@echo "Client build: Godot exports are configured via the editor."
|
||||
@echo "Use 'make client' to run the client directly."
|
||||
|
||||
# --- Run ---
|
||||
|
||||
server:
|
||||
cd server && cargo run
|
||||
|
||||
client:
|
||||
@if command -v godot4 >/dev/null 2>&1; then \
|
||||
godot4 --path client; \
|
||||
elif command -v godot >/dev/null 2>&1; then \
|
||||
godot --path client; \
|
||||
else \
|
||||
echo "Godot not found. Run 'make setup' first."; exit 1; \
|
||||
fi
|
||||
|
||||
# --- Test ---
|
||||
|
||||
test: test-server test-client
|
||||
|
||||
test-server:
|
||||
cd server && cargo test
|
||||
|
||||
test-client:
|
||||
@echo "Client tests run via gdUnit4 inside Godot."
|
||||
@echo "TODO: headless test runner integration"
|
||||
|
||||
# --- Lint ---
|
||||
|
||||
lint: lint-server lint-client
|
||||
|
||||
lint-server:
|
||||
cd server && cargo clippy -- -D warnings
|
||||
cd server && cargo fmt --check
|
||||
|
||||
lint-client:
|
||||
@echo "Client lint: TODO — gdlint / gdformat integration"
|
||||
|
||||
# --- CI (run locally) ---
|
||||
|
||||
ci: ci-server ci-client
|
||||
|
||||
ci-server: lint-server build-server test-server
|
||||
|
||||
ci-client: lint-client build-client test-client
|
||||
|
||||
# --- Clean ---
|
||||
|
||||
clean:
|
||||
cd server && cargo clean || true
|
||||
rm -rf .cache/*
|
||||
@echo "Clean complete."
|
||||
Reference in New Issue
Block a user