#!/bin/bash
# -----------------------------
# Déploiement d'une release branch
# -----------------------------


VERSION=$1

SERVER_USER=tutoriu
SERVER_HOST=ftp.cluster030.hosting.ovh.net
SERVER_PATH=/homez.1548/tutoriu/old

if [ -z "$VERSION" ]; then
  echo "Usage: ./deploy-release.sh <version>"
  echo "Exemple: ./deploy-release.sh 1.0.1"
  exit 1
fi

RELEASE_BRANCH="release-$VERSION"
TAG_NAME="v$VERSION"

CURRENT_BRANCH=$(git branch --show-current)

if [ "$CURRENT_BRANCH" != "$RELEASE_BRANCH" ]; then
  echo "❌ Tu n'es pas sur la branche $RELEASE_BRANCH."
  echo "Branche actuelle : $CURRENT_BRANCH"
  echo ""
  echo "Fais d'abord :"
  echo "git checkout $RELEASE_BRANCH"
  exit 1
fi

# Vérifier qu'il y a un repo Git
if ! git rev-parse --is-inside-work-tree >/dev/null 2>&1; then
  echo "❌ Ce dossier n'est pas un dépôt Git."
  exit 1
fi

# 1️⃣ Commit local
echo "Commit des changements locaux..."
git add .

git commit -m "release: mise à jour de la release $RELEASE_BRANCH" || echo "Aucun commit à ajouter"

# 2️⃣ Push release
echo "Push de la branche $RELEASE_BRANCH..."
git push -u origin "$RELEASE_BRANCH" || exit 1

# 3️⃣ Merge release → master
echo "Merge de $RELEASE_BRANCH vers master..."
git checkout master || exit 1
git pull origin master || exit 1
git merge "$RELEASE_BRANCH" -m "merge release $RELEASE_BRANCH vers master" || exit 1
git push origin master || exit 1

# 4️⃣ Merge release → develop
echo "Merge de $RELEASE_BRANCH vers develop..."
git checkout develop || exit 1
git pull origin develop || exit 1
git merge "$RELEASE_BRANCH" -m "merge release $RELEASE_BRANCH vers develop" || exit 1
git push origin develop || exit 1

# 5️⃣ Tag de version
echo "Création du tag $RELEASE_BRANCH..."
git checkout master || exit 1

if git rev-parse "$RELEASE_BRANCH" >/dev/null 2>&1; then
  echo "⚠️ Le tag $RELEASE_BRANCH existe déjà."
else
  git tag -a "$RELEASE_BRANCH" -m "Release $RELEASE_BRANCH" || exit 1
  git push origin "$RELEASE_BRANCH" || exit 1
fi

# 6️⃣ Déploiement sur serveur distant
echo "Déploiement sur le serveur distant..."

ssh "$SERVER_USER@$SERVER_HOST" << EOF
cd "$SERVER_PATH" || exit 1
git fetch --all
git checkout master
git reset --hard origin/master
# php bin/console cache:clear --env=prod
/usr/local/php7.3/bin/php app/console cache:clear --env=prod
EOF

echo "✅ Déploiement de la release $RELEASE_BRANCH terminé !"