#!/bin/bash
set -euo pipefail

# === Config ===
BIN_DIR="$HOME/bin"
COMPOSER_BIN="$BIN_DIR/composer"
INSTALLER="composer-setup.php"

# Trouve un binaire PHP potable (mutu OVH style)
pick_php() {
  for c in php82 php81 php80 php74 php; do
    if command -v "$c" >/dev/null 2>&1; then
      echo "$c"; return 0
    fi
  done
  return 1
}

PHP_BIN="$(pick_php || true)"
if [ -z "${PHP_BIN:-}" ]; then
  echo "❌ Aucun binaire PHP trouvé (php82/php81/php80/php/php74)."
  echo "   Sur OVH, charge l'env avec: source ~/bashrc ou contacte le support."
  exit 1
fi

echo "🔎 PHP utilisé: $("$PHP_BIN" -v | head -n1)"

# Idempotent: si déjà installé, on skip sauf si --force
if [ -f "$COMPOSER_BIN" ] && [ "${1:-}" != "--force" ]; then
  echo "✅ Composer déjà installé: $COMPOSER_BIN"
  "$COMPOSER_BIN" --version || true
  exit 0
fi

mkdir -p "$BIN_DIR"

echo "⬇️  Téléchargement de l'installer Composer…"
$PHP_BIN -r "copy('https://getcomposer.org/installer', '$INSTALLER');"

echo "🔐 Vérification de la signature…"
EXPECTED_SIGNATURE="$($PHP_BIN -r "copy('https://composer.github.io/installer.sig', 'php://stdout');")"
ACTUAL_SIGNATURE="$($PHP_BIN -r "echo hash_file('sha384', '$INSTALLER');")"

if [ "$EXPECTED_SIGNATURE" != "$ACTUAL_SIGNATURE" ]; then
  echo "❌ Signature invalide. Abandon."
  rm -f "$INSTALLER"
  exit 1
fi

echo "⚙️  Installation dans $BIN_DIR …"
$PHP_BIN "$INSTALLER" --install-dir="$BIN_DIR" --filename=composer
rm -f "$INSTALLER"

# Ajout PATH (idempotent)
add_path_line='export PATH="$HOME/bin:$PATH"'
for f in "$HOME/.bashrc" "$HOME/.bash_profile"; do
  if [ -f "$f" ]; then
    grep -Fq "$add_path_line" "$f" || echo "$add_path_line" >> "$f"
  else
    echo "$add_path_line" >> "$f"
  fi
done

echo "🔁 Recharge ton shell (ou: source ~/.bashrc) pour l’avoir dans le PATH."
echo "✅ Install OK: $COMPOSER_BIN"
"$COMPOSER_BIN" --version || true
