#!/usr/bin/env sh set -eu app_env="$(printf '%s' "${APP_ENV:-development}" | tr '[:upper:]' '[:lower:]')" if [ -z "${VITE_ADMIN_PUBLIC_URL:-}" ] && [ -n "${ADMINFRONT_URL:-}" ]; then export VITE_ADMIN_PUBLIC_URL="$ADMINFRONT_URL" fi if [ -z "${VITE_ADMIN_PUBLIC_URL:-}" ] && [ -n "${ADMINFRONT_CALLBACK_URLS:-}" ]; then first_admin_callback="${ADMINFRONT_CALLBACK_URLS%%,*}" case "$first_admin_callback" in http://*/auth/callback | https://*/auth/callback) export VITE_ADMIN_PUBLIC_URL="${first_admin_callback%/auth/callback}" ;; esac fi case "$app_env" in production|prod|stage|staging) mode="production" ;; *) mode="development" ;; esac if [ "${1:-}" = "--print-admin-public-url" ]; then printf '%s\n' "${VITE_ADMIN_PUBLIC_URL:-}" exit 0 fi if [ "${1:-}" = "--print-mode" ]; then printf '%s\n' "$mode" exit 0 fi ensure_frontend_dependencies() { if [ ! -f package.json ] || [ ! -f package-lock.json ]; then return 0 fi if command -v sha256sum >/dev/null 2>&1; then deps_hash="$(sha256sum package.json package-lock.json | sha256sum | awk '{print $1}')" else deps_hash="$(cksum package.json package-lock.json | cksum | awk '{print $1}')" fi deps_stamp="node_modules/.baron-deps-hash" installed_hash="$(cat "$deps_stamp" 2>/dev/null || true)" if [ "$installed_hash" != "$deps_hash" ]; then echo "Installing frontend dependencies from package-lock.json..." npm ci mkdir -p node_modules printf '%s\n' "$deps_hash" > "$deps_stamp" fi } ensure_frontend_dependencies if [ "$mode" = "production" ]; then echo "Running in production mode with Vite preview..." exec sh -c "npm run build && npm run preview -- --host 0.0.0.0" fi echo "Running in development mode..." exec npm run dev -- --host 0.0.0.0