#!/usr/bin/env bash
# تثبيت تطبيق Spotrade على استضافة مشتركة (cPanel + SSH) — قراءة فقط دائمًا.
# يعمل التطبيق داخليًا على 127.0.0.1:8765 ويتم نشره عبر قواعد .htaccess.
set -euo pipefail

APP_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"

if [ ! -f "$APP_DIR/.env" ]; then
  echo "[خطأ] ملف .env غير موجود. انسخ .env.example إلى .env وضع مفاتيح API."
  exit 1
fi
if ! grep -q "^BINANCE_API_KEY=..*" "$APP_DIR/.env"; then
  echo "[خطأ] BINANCE_API_KEY فارغ في ملف .env."
  exit 1
fi

find_python() {
  local cmd ver major minor
  for cmd in python3.13 python3.12 python3.11 python3.10 \
             /opt/alt/python313/bin/python3 /opt/alt/python312/bin/python3 \
             /opt/alt/python311/bin/python3 /opt/alt/python310/bin/python3 \
             python3; do
    if command -v "$cmd" >/dev/null 2>&1; then
      ver="$("$cmd" -c 'import sys;print(f"{sys.version_info[0]}.{sys.version_info[1]}")' 2>/dev/null || echo 0.0)"
      major="${ver%%.*}"; minor="${ver##*.}"
      if [ "$major" -ge 3 ] && [ "$minor" -ge 10 ]; then
        command -v "$cmd"
        return 0
      fi
    fi
  done
  echo "[خطأ] لم أجد بايثون 3.10 أو أحدث على الخادم." >&2
  echo "جرّب من cPanel: Select Python Version لتثبيت بايثون حديث." >&2
  return 1
}

PYTHON="$(find_python)"
echo "سأستخدم: $PYTHON ($("$PYTHON" --version 2>&1))"

echo "[1/5] إنشاء البيئة الافتراضية..."
"$PYTHON" -m venv "$APP_DIR/.venv"
"$APP_DIR/.venv/bin/pip" install --quiet --upgrade pip
"$APP_DIR/.venv/bin/pip" install --quiet -r "$APP_DIR/requirements.txt"

echo "[2/5] تثبيت صلاحيات التشغيل..."
chmod +x "$APP_DIR/run.sh" "$APP_DIR/keepalive.sh" 2>/dev/null || true

echo "[3/5] تشغيل أولي للتأكد..."
cd "$APP_DIR"
set +e
BSA_HOST=127.0.0.1 BSA_RUNTIME_DIR="$APP_DIR" timeout 8 ./.venv/bin/python app.py --no-browser --port 8765 > first-run.log 2>&1
set -e
if grep -q "Private login is not configured" "$APP_DIR/first-run.log" 2>/dev/null; then
  echo "      (متوقع) يجب تعيين كلمة المرور أولاً — الخطوة التالية."
elif grep -qi "traceback\|error" "$APP_DIR/first-run.log" 2>/dev/null; then
  echo "[تحذير] راجع first-run.log لوجود مشكلة."
  tail -5 "$APP_DIR/first-run.log" || true
else
  echo "      التشغيل الأول سليم."
fi
rm -f "$APP_DIR/first-run.log"

echo "[4/5] تشغيل التطبيق الآن..."
pgrep -f "$APP_DIR/.venv/bin/python app.py" >/dev/null 2>&1 || nohup "$APP_DIR/run.sh" >/dev/null 2>&1 &

echo "[5/5] اكتمل التثبيت. الخطوات المتبقية:"
echo ""
echo "  1) عيّن كلمة مرور الدخول (مرة واحدة):"
echo "       cd $APP_DIR && .venv/bin/python set_admin_password.py"
echo ""
echo "  2) في cPanel أنشئ دومينًا فرعيًا (مثل app.دومينك.com) بمجلد فارغ"
echo "     وضع داخله الملف htaccess-proxy.txt باسم .htaccess"
echo ""
echo "  3) أضف اسم الدومين الفرعي إلى trusted_hosts.txt ثم أعد التشغيل:"
echo "       echo 'app.دومينك.com' >> $APP_DIR/trusted_hosts.txt"
echo "       pkill -f '$APP_DIR/.venv/bin/python app.py'; sleep 3"
echo ""
echo "  4) في cPanel ← Cron Jobs أضف مهمة كل 5 دقائق:"
echo "       $APP_DIR/keepalive.sh"
echo ""
echo "  5) افتح http://app.دومينك.com — يجب أن تظهر صفحة الدخول."
