#!/usr/bin/env bash
set -euo pipefail

MSG="${1:-🚀 Patch auto}"
SCRIPT_NAME="$(basename "$0")"

# 0) pré-checks
git rev-parse --is-inside-work-tree >/dev/null 2>&1 || {
  echo "❌ Lance ce script depuis la racine d'un dépôt git."; exit 1; }

# 1) se placer/Créer la branche main
if git show-ref --verify --quiet refs/heads/main; then
  git checkout main
else
  git checkout -b main
fi

# 2) vérifier remote
git remote get-url origin >/dev/null 2>&1 || {
  echo "❌ Pas de remote 'origin'. Fais: git remote add origin <URL>"; exit 1; }

# 3) forcer l’ajout du script même s’il est ignoré
if git check-ignore -q "$SCRIPT_NAME"; then
  echo "ℹ️  $SCRIPT_NAME est ignoré par .gitignore → ajout forcé"
  git add -f "$SCRIPT_NAME"
else
  git add "$SCRIPT_NAME"
fi

# 4) ajouter tout le reste sauf les fichiers indésirables
git add . \
  ':!*.DS_Store' \
  ':!*.AppleDouble' \
  ':!*.LSOverride'

# 5) commit si nécessaire
if git diff --cached --quiet; then
  echo "ℹ️  Rien à commit."
else
  git commit -m "$MSG"
  echo "✅ Commit créé: $MSG"
fi

# 6) push
if git rev-parse --abbrev-ref main@{u} >/dev/null 2>&1; then
  git push origin main
else
  git push -u origin main
fi

echo "✅ Push terminé sur 'origin/main'."