#!/usr/bin/env bash
# =============================================================
# deploy.sh — dijalankan DI ATAS SERVER oleh GitHub Actions
# setiap kali ada push/merge ke branch main.
#
# Skrip ini generic: dia auto-detect jenis projek (Node, PHP,
# Python, atau static HTML) dan buat langkah yang sesuai.
# Ubah suai bahagian "RESTART" ikut cara app anda berjalan.
# =============================================================
set -euo pipefail

APP_DIR="/var/www/webg"
BRANCH="main"

echo "==> Deploy bermula: $(date)"
cd "$APP_DIR"

# 1. Tarik kod terkini dari GitHub
git fetch origin "$BRANCH"
git reset --hard "origin/$BRANCH"
echo "==> Kod dikemas kini ke commit: $(git rev-parse --short HEAD)"

# 2. Install dependencies ikut jenis projek
if [ -f package.json ]; then
    echo "==> Projek Node.js dikesan"
    if [ -f package-lock.json ]; then
        npm ci --omit=dev || npm ci
    else
        npm install
    fi
    # Build jika ada skrip build (contoh: Next.js, Vite, React)
    if npm run | grep -q "^  build$"; then
        npm run build
    fi
elif [ -f composer.json ]; then
    echo "==> Projek PHP dikesan"
    composer install --no-dev --optimize-autoloader
elif [ -f requirements.txt ]; then
    echo "==> Projek Python dikesan"
    if [ ! -d .venv ]; then python3 -m venv .venv; fi
    .venv/bin/pip install -r requirements.txt
else
    echo "==> Tiada dependency file dikesan (static site?) — skip install"
fi

# 3. RESTART — aktifkan baris yang berkenaan dengan app anda:
#
# Untuk app Node.js dengan PM2:
if command -v pm2 >/dev/null 2>&1 && pm2 describe webg >/dev/null 2>&1; then
    pm2 reload webg --update-env
    echo "==> PM2 app 'webg' di-reload"
fi
#
# Untuk app dengan systemd service (uncomment jika guna):
# sudo systemctl restart webg
#
# Untuk PHP-FPM (uncomment jika guna):
# sudo systemctl reload php8.3-fpm

# 3.5 URL bersih: pastikan nginx live resolve /harga -> harga.html.
# Config live disalin sekali semasa setup (dan diubah certbot), jadi
# perubahan repo tak sampai sendiri. Patch sekali secara idempotent;
# nginx -t di langkah 4 melindungi daripada config rosak.
NGINX_LIVE="/etc/nginx/sites-available/webg.my"
if [ -f "$NGINX_LIVE" ] && ! grep -q 'uri\.html' "$NGINX_LIVE"; then
    sudo sed -i 's|try_files $uri $uri/ =404;|try_files $uri $uri/ $uri.html =404;|g' "$NGINX_LIVE"
    if grep -q 'uri\.html' "$NGINX_LIVE"; then
        echo "==> nginx: try_files dipatch untuk URL bersih (tanpa .html)"
    else
        echo "==> AMARAN: pola try_files tak ditemui, patch URL bersih tidak diaplikasi" >&2
    fi
fi

# 4. Reload nginx (selamat — hanya reload config, tak putuskan traffic)
if command -v nginx >/dev/null 2>&1; then
    sudo nginx -t && sudo systemctl reload nginx
fi

echo "==> Deploy selesai: $(date)"
