#!/usr/bin/env bash
#
# Mise à jour du package alcyon/identity (staging/prod).
#
# Usage :
#   bash deploy.sh                 # met à jour sur dev (branche livrée — décision 07/2026)
#   BRANCH=xxx bash deploy.sh      # autre branche
#
# identity N'EST PAS un service : pas de port, pas de .env, pas de process.
# C'est une dépendance composer "path" consommée par les apps voisines
# (estair, chaps, messager → "url": "../identity").
#
# ─── LE PIÈGE ─────────────────────────────────────────────────────────────────
# Composer symlinke le package : le code est actif immédiatement dans les apps
# hôtes, MAIS leurs caches Laravel (config/route) et leurs migrations ne se
# rejouent pas tout seuls. Après une mise à jour d'identity :
#   → REDÉPLOYER messager, chaps puis estair (bash deploy.sh dans chacun).
# ──────────────────────────────────────────────────────────────────────────────

set -euo pipefail

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

log()  { echo -e "\n\033[1;36m==> $*\033[0m"; }
die()  { echo -e "\n\033[1;31m✘ $*\033[0m" >&2; exit 1; }

CURRENT_SHA=$(git rev-parse HEAD)
log "Révision actuelle : $CURRENT_SHA  (rollback : git reset --hard $CURRENT_SHA)"

log "Récupération du code ($BRANCH)"
git fetch origin
git rev-parse --verify "origin/$BRANCH" >/dev/null 2>&1 \
    || die "La branche '$BRANCH' n'existe pas sur origin."
git reset --hard "origin/$BRANCH"

log "identity à jour — $(git rev-parse --short HEAD)"
echo -e "\033[1;33m! Redéployer les apps hôtes pour appliquer caches + migrations :\033[0m"
echo -e "\033[1;33m  messager, chaps, estair (bash deploy.sh dans chacune).\033[0m"
