#!/usr/bin/env bash # setup.sh — Cross-platform developer environment setup entrypoint. # # macOS: Dispatches to scripts/setup-dev-environment.sh (full bootstrap). # Linux: Minimal bootstrap (JDK check, git hooks, Gradle dependencies). # # Usage: ./scripts/setup.sh [--install] [--verify] set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)" OS="$(uname -s)" if [[ "$OS" == "Darwin" ]]; then exec "${SCRIPT_DIR}/setup-dev-environment.sh" "$@" fi if [[ "$OS" != "Linux" ]]; then echo "Unsupported OS: $OS. This script supports macOS and Linux." exit 1 fi # --- Linux bootstrap --- echo "=== periodvault development setup (Linux) ===" echo "" # Check JDK if command -v java >/dev/null 2>&1; then JAVA_MAJOR="$(java -version 2>&1 | head -1 | sed -E 's/.*"([0-9]+).*/\1/')" echo "[ok] Java is installed (major version: $JAVA_MAJOR)" if [[ "$JAVA_MAJOR" -lt 17 ]]; then echo "[warn] JDK 17+ is required. Found major version $JAVA_MAJOR." echo " Install: sudo apt-get install -y openjdk-17-jdk-headless" fi else echo "[error] Java not found." echo " Install: sudo apt-get install -y openjdk-17-jdk-headless" exit 1 fi # Check Android SDK if [[ -n "${ANDROID_HOME:-}" ]]; then echo "[ok] ANDROID_HOME is set: $ANDROID_HOME" else echo "[warn] ANDROID_HOME not set. Android SDK may not be available." echo " Set ANDROID_HOME to your Android SDK path for Android builds." fi # Install git hooks if [[ -x "$SCRIPT_DIR/install-hooks.sh" ]]; then echo "" echo "Installing git hooks..." "$SCRIPT_DIR/install-hooks.sh" echo "[ok] Git hooks configured" fi # Download Gradle dependencies if [[ -x "$PROJECT_ROOT/gradlew" ]]; then echo "" echo "Downloading Gradle dependencies..." "$PROJECT_ROOT/gradlew" --no-daemon dependencies > /dev/null 2>&1 || true echo "[ok] Gradle dependencies downloaded" fi echo "" echo "=== Setup complete (Linux) ===" echo "" echo "Verification commands:" echo " ./gradlew shared:jvmTest" echo " ./gradlew androidApp:testDebugUnitTest"