maestro/scripts/build-all.sh
2026-06-03 05:08:00 +00:00

53 lines
1.2 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
PROJECT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
cd "$PROJECT_DIR"
SKIP_INSTALL=0
SKIP_PYTHON=0
for arg in "$@"; do
case "$arg" in
--skip-install)
SKIP_INSTALL=1
;;
--skip-python)
SKIP_PYTHON=1
;;
*)
echo "Unknown option: $arg" >&2
echo "Usage: ./scripts/build-all.sh [--skip-install] [--skip-python]" >&2
exit 1
;;
esac
done
if [ "$SKIP_INSTALL" -eq 0 ]; then
echo "[1/5] Installing backend dependencies"
npm ci
echo "[2/5] Installing UI dependencies"
npm --prefix ui ci
else
echo "[1/5] Skipping dependency installation"
echo "[2/5] Reusing existing node_modules"
fi
echo "[3/5] Building backend"
npm run build:server
echo "[4/5] Building UI"
npm --prefix ui run build
if [ "$SKIP_PYTHON" -eq 0 ]; then
echo "[5/5] Pre-baking Python packages for the Bash sandbox"
# Non-fatal: the script warns and exits 0 if pip/python is unavailable, so a
# missing python toolchain never breaks the JS build. Skip with --skip-python.
bash "$PROJECT_DIR/scripts/prebake-python.sh" || true
else
echo "[5/5] Skipping Python pre-bake (--skip-python)"
fi
echo "Build complete: backend dist/ and ui/dist/ are ready"