mirror of
https://github.com/sweidac/kidsbox.git
synced 2026-10-28 06:52:57 +01:00
Add install.sh, setup.sh, and update README
install.sh: install ESP-IDF v5.2 + ESP-ADF v2.7, detect existing env, write .env file with IDF_PATH/ADF_PATH setup.sh: prompt for WiFi creds, write sdkconfig.defaults, build, optionally flash and prepare SD card README: rewrite to reflect current architecture (NFC URL streaming, web UI, no arduino-esp32), add roadmap and quick start https://claude.ai/code/session_01MhAnh68DPNnTjcKqjNYDmk
This commit is contained in:
3 files changed
+333
-51
No files matched your search
Executable
+104
@@ -0,0 +1,104 @@
|
||||
#!/usr/bin/env bash
|
||||
# install.sh — set up the Kidsbox development environment
|
||||
# Installs ESP-IDF v5.2 + ESP-ADF v2.7, or validates an existing installation.
|
||||
set -euo pipefail
|
||||
|
||||
BOLD='\033[1m'; GREEN='\033[0;32m'; YELLOW='\033[0;33m'; RED='\033[0;31m'; NC='\033[0m'
|
||||
info() { echo -e "${GREEN}[install]${NC} $*"; }
|
||||
warn() { echo -e "${YELLOW}[warn]${NC} $*"; }
|
||||
die() { echo -e "${RED}[error]${NC} $*" >&2; exit 1; }
|
||||
heading() { echo -e "\n${BOLD}$*${NC}"; }
|
||||
|
||||
IDF_VERSION="v5.2.3"
|
||||
ADF_VERSION="v2.7"
|
||||
IDF_DEFAULT="$HOME/esp/esp-idf"
|
||||
ADF_DEFAULT="$HOME/esp/esp-adf"
|
||||
|
||||
# ── prerequisites ──────────────────────────────────────────────────────────────
|
||||
|
||||
heading "Checking prerequisites"
|
||||
|
||||
for cmd in git python3 pip3 cmake ninja; do
|
||||
if command -v "$cmd" &>/dev/null; then
|
||||
info "$cmd: $(command -v $cmd)"
|
||||
else
|
||||
die "$cmd not found. Please install it and re-run."
|
||||
fi
|
||||
done
|
||||
|
||||
PYTHON_VERSION=$(python3 -c 'import sys; print(f"{sys.version_info.major}.{sys.version_info.minor}")')
|
||||
python3 -c 'import sys; sys.exit(0 if sys.version_info >= (3,8) else 1)' \
|
||||
|| die "Python >= 3.8 required (found $PYTHON_VERSION)"
|
||||
info "Python $PYTHON_VERSION: OK"
|
||||
|
||||
# ── ESP-IDF ────────────────────────────────────────────────────────────────────
|
||||
|
||||
heading "ESP-IDF ($IDF_VERSION)"
|
||||
|
||||
if [[ -n "${IDF_PATH:-}" && -f "$IDF_PATH/export.sh" ]]; then
|
||||
INSTALLED_TAG=$(git -C "$IDF_PATH" describe --tags 2>/dev/null || echo "unknown")
|
||||
info "Found existing ESP-IDF at \$IDF_PATH=$IDF_PATH (tag: $INSTALLED_TAG)"
|
||||
warn "Skipping IDF install. To use a fresh install, unset \$IDF_PATH."
|
||||
else
|
||||
IDF_PATH="${IDF_DEFAULT}"
|
||||
info "Installing ESP-IDF $IDF_VERSION to $IDF_PATH"
|
||||
mkdir -p "$(dirname "$IDF_PATH")"
|
||||
if [[ -d "$IDF_PATH/.git" ]]; then
|
||||
git -C "$IDF_PATH" fetch --tags
|
||||
git -C "$IDF_PATH" checkout "$IDF_VERSION"
|
||||
else
|
||||
git clone --depth 1 --branch "$IDF_VERSION" \
|
||||
https://github.com/espressif/esp-idf.git "$IDF_PATH"
|
||||
fi
|
||||
git -C "$IDF_PATH" submodule update --init --recursive
|
||||
info "Running ESP-IDF install script"
|
||||
"$IDF_PATH/install.sh" esp32
|
||||
info "ESP-IDF installed."
|
||||
fi
|
||||
|
||||
# ── ESP-ADF ────────────────────────────────────────────────────────────────────
|
||||
|
||||
heading "ESP-ADF ($ADF_VERSION)"
|
||||
|
||||
if [[ -n "${ADF_PATH:-}" && -d "$ADF_PATH" ]]; then
|
||||
INSTALLED_TAG=$(git -C "$ADF_PATH" describe --tags 2>/dev/null || echo "unknown")
|
||||
info "Found existing ESP-ADF at \$ADF_PATH=$ADF_PATH (tag: $INSTALLED_TAG)"
|
||||
warn "Skipping ADF install. To use a fresh install, unset \$ADF_PATH."
|
||||
else
|
||||
ADF_PATH="${ADF_DEFAULT}"
|
||||
info "Installing ESP-ADF $ADF_VERSION to $ADF_PATH"
|
||||
mkdir -p "$(dirname "$ADF_PATH")"
|
||||
if [[ -d "$ADF_PATH/.git" ]]; then
|
||||
git -C "$ADF_PATH" fetch --tags
|
||||
git -C "$ADF_PATH" checkout "$ADF_VERSION"
|
||||
else
|
||||
git clone --depth 1 --branch "$ADF_VERSION" \
|
||||
https://github.com/espressif/esp-adf.git "$ADF_PATH"
|
||||
fi
|
||||
git -C "$ADF_PATH" submodule update --init --recursive
|
||||
info "ESP-ADF installed."
|
||||
fi
|
||||
|
||||
# ── env file ───────────────────────────────────────────────────────────────────
|
||||
|
||||
heading "Writing .env"
|
||||
|
||||
ENV_FILE="$(dirname "$0")/.env"
|
||||
cat > "$ENV_FILE" <<EOF
|
||||
# Generated by install.sh — source this before building:
|
||||
# source .env
|
||||
export IDF_PATH="${IDF_PATH:-$IDF_DEFAULT}"
|
||||
export ADF_PATH="${ADF_PATH:-$ADF_DEFAULT}"
|
||||
EOF
|
||||
info "Wrote $ENV_FILE"
|
||||
|
||||
# ── done ───────────────────────────────────────────────────────────────────────
|
||||
|
||||
heading "Done!"
|
||||
echo ""
|
||||
echo " Next steps:"
|
||||
echo " 1. Source the environment:"
|
||||
echo " source .env && source \$IDF_PATH/export.sh"
|
||||
echo " 2. Configure WiFi and build:"
|
||||
echo " ./setup.sh"
|
||||
echo ""
|
||||
Reference in new issue
Block a user