#!/usr/bin/env bash
#
# Déploiement caisse-resto sur mutualisé (SSH), mono-domaine.
# Build le front en local, met à jour le code serveur, envoie le front.
#
# Usage :
#   SSH_HOST="user@sshcloud.ovh.net" REMOTE_DIR="~/caisse-resto" ./scripts/deploy.sh
#
# Variables (surchargées par l'environnement) :
#   SSH_HOST    user@hote SSH de l'hébergeur          (obligatoire)
#   REMOTE_DIR  dossier du dépôt sur le serveur       (def: ~/caisse-resto)
#   PHP_BIN     binaire PHP côté serveur              (def: php ; parfois php8.2)
#
set -euo pipefail

SSH_HOST="${SSH_HOST:-}"
REMOTE_DIR="${REMOTE_DIR:-~/caisse-resto}"
PHP_BIN="${PHP_BIN:-php}"

if [ -z "$SSH_HOST" ]; then
  echo "✗ SSH_HOST non défini. Ex. : SSH_HOST=\"user@sshcloud.ovh.net\" ./scripts/deploy.sh" >&2
  exit 1
fi

# Se placer à la racine du dépôt (le script est dans scripts/).
cd "$(dirname "$0")/.."

echo "▶ 1/3  Build du front…"
npm --prefix frontend ci
npm --prefix frontend run build

echo "▶ 2/3  Mise à jour du code sur le serveur…"
ssh "$SSH_HOST" "set -e; cd $REMOTE_DIR && git pull --ff-only && \
  cd backend && composer install --no-dev --optimize-autoloader && \
  $PHP_BIN artisan migrate --force && \
  $PHP_BIN artisan config:cache && $PHP_BIN artisan route:cache"

echo "▶ 3/3  Envoi du front (dist → backend/public)…"
# Pas de --delete : on préserve les fichiers Laravel de public/ (index.php,
# .htaccess, storage…). Les anciens assets hachés sont inoffensifs.
rsync -avz frontend/dist/ "$SSH_HOST:$REMOTE_DIR/backend/public/"

echo "✅ Déployé."
