#!/usr/bin/env bash # setup.sh — configure, build, and optionally flash/deploy Kidsbox set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" DEVICE_DIR="$SCRIPT_DIR/device" WWW_DIR="$SCRIPT_DIR/www" BOLD='\033[1m'; GREEN='\033[0;32m'; YELLOW='\033[0;33m'; RED='\033[0;31m'; NC='\033[0m' info() { echo -e "${GREEN}[setup]${NC} $*"; } warn() { echo -e "${YELLOW}[warn]${NC} $*"; } die() { echo -e "${RED}[error]${NC} $*" >&2; exit 1; } heading() { echo -e "\n${BOLD}$*${NC}"; } prompt() { echo -e "${YELLOW}$*${NC}"; } # ── check environment ────────────────────────────────────────────────────────── heading "Checking environment" [[ -f "$SCRIPT_DIR/.env" ]] && source "$SCRIPT_DIR/.env" [[ -n "${IDF_PATH:-}" ]] || die "IDF_PATH not set. Run: source .env && source \$IDF_PATH/export.sh" [[ -n "${ADF_PATH:-}" ]] || die "ADF_PATH not set. Run: source .env && source \$IDF_PATH/export.sh" command -v idf.py &>/dev/null || die "idf.py not found. Run: source \$IDF_PATH/export.sh" info "IDF_PATH: $IDF_PATH" info "ADF_PATH: $ADF_PATH" # ── WiFi credentials ─────────────────────────────────────────────────────────── heading "WiFi configuration" SDKCONFIG_DEFAULTS="$DEVICE_DIR/sdkconfig.defaults" if [[ -f "$SDKCONFIG_DEFAULTS" ]] \ && grep -q "CONFIG_ESP_WIFI_SSID" "$SDKCONFIG_DEFAULTS" 2>/dev/null; then CURRENT_SSID=$(grep 'CONFIG_ESP_WIFI_SSID' "$SDKCONFIG_DEFAULTS" | cut -d'"' -f2) info "WiFi already configured (SSID: $CURRENT_SSID)" prompt "Re-enter credentials? [y/N] " read -r RECONFIGURE [[ "$RECONFIGURE" =~ ^[Yy]$ ]] || SKIP_WIFI=1 fi if [[ -z "${SKIP_WIFI:-}" ]]; then prompt "WiFi SSID: " read -r WIFI_SSID prompt "WiFi Password: " read -rs WIFI_PASSWORD echo "" [[ -n "$WIFI_SSID" ]] || die "SSID cannot be empty" [[ -n "$WIFI_PASSWORD" ]] || die "Password cannot be empty" cat > "$SDKCONFIG_DEFAULTS" <" echo " containing either:" echo " - An http:// URL (will be streamed and cached)" echo " - A local path (e.g. /sdcard/music/song.mp3)" echo " Tag IDs are shown in the serial monitor when a tag is scanned." fi # ── done ─────────────────────────────────────────────────────────────────────── heading "Done!" echo "" echo " Once running, open http:// in your browser." echo ""