#!/bin/sh
set -eu

SCRIPT_DIR="$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)"
PROJECT_ROOT="$(dirname "$SCRIPT_DIR")"
cd "$PROJECT_ROOT"

if [ ! -f "artisan" ]; then
  echo "Erreur: lance ce script depuis un projet Laravel (artisan introuvable)." >&2
  exit 1
fi

NO_BACKUP="${1:-}"

if [ "$NO_BACKUP" != "--no-backup" ]; then
  "$SCRIPT_DIR/backup-db"
fi

if command -v composer >/dev/null 2>&1; then
  COMPOSER_CMD="composer"
elif [ -f "$HOME/composer.phar" ]; then
  COMPOSER_CMD="php $HOME/composer.phar"
elif [ -f "$PROJECT_ROOT/composer.phar" ]; then
  COMPOSER_CMD="php $PROJECT_ROOT/composer.phar"
else
  echo "Erreur: composer introuvable (ni binaire global, ni composer.phar)." >&2
  exit 1
fi

echo "Mise a jour du code..."
git pull --ff-only origin main

echo "Installation des dependances production..."
# shellcheck disable=SC2086
$COMPOSER_CMD install --no-dev --prefer-dist --optimize-autoloader --no-interaction

echo "Migrations..."
php artisan migrate --force

echo "Lien symbolique public/storage (relatif, recommande mutualise / OVH)..."
mkdir -p storage/app/public
if [ -e public/storage ] && [ ! -L public/storage ]; then
  echo "Suppression de public/storage (ce n'est pas un lien) pour pouvoir recreer le symlink."
  rm -rf public/storage
fi
php artisan storage:link --relative --force

echo "Caches Laravel..."
php artisan optimize:clear
php artisan config:cache
php artisan route:cache
php artisan view:cache

echo "Deploiement termine."
