#!/usr/bin/env bash # ────────────────────────────────────────────────────────────── # bricks-mp — Build all test clients (generic-client, sageclient) # # Usage: # ./build_all.sh # Build all # ./build_all.sh generic # Build generic-client only # ./build_all.sh sage # Build sageclient only # ./build_all.sh run # Run generic-client # ./build_all.sh clean # Clean all # ────────────────────────────────────────────────────────────── set -euo pipefail SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)" # ─── Find Gradle ─── find_gradle() { if [ -x "$HOME/.gradle/gradle-8.5/bin/gradle" ]; then echo "$HOME/.gradle/gradle-8.5/bin/gradle" return 0 fi if [ -x "$SCRIPT_DIR/../gradlew" ]; then echo "$SCRIPT_DIR/../gradlew" return 0 fi if command -v gradle >/dev/null 2>&1; then echo "gradle" return 0 fi return 1 } if ! GRADLE_CMD="$(find_gradle)"; then echo "ERROR: Gradle not found. Place at ~/.gradle/gradle-8.5 or install system gradle." >&2 exit 1 fi echo "Using Gradle: $GRADLE_CMD" MODE="${1:-build}" gradle_build() { local client="$1" local dir="$SCRIPT_DIR/$client" if [ ! -d "$dir" ]; then echo "SKIP: $client (directory not found)" return 0 fi echo "" echo "══════════════════════════════════════════════" echo " Building: $client" echo "══════════════════════════════════════════════" cd "$dir" case "$MODE" in build|*) "$GRADLE_CMD" compileKotlinJvm --no-daemon --no-configuration-cache ;; run) "$GRADLE_CMD" run --no-daemon --no-configuration-cache ;; clean) "$GRADLE_CMD" clean --no-daemon --no-configuration-cache ;; package) "$GRADLE_CMD" createDistributable --no-daemon --no-configuration-cache ;; esac echo "OK: $client" } case "$MODE" in generic) gradle_build generic-client ;; sage) gradle_build sageclient ;; clean) gradle_build generic-client gradle_build sageclient ;; run) gradle_build generic-client ;; build|*) gradle_build generic-client gradle_build sageclient echo "" echo "══════════════════════════════════════════════" echo " All builds completed" echo "══════════════════════════════════════════════" ;; esac