#!/bin/sh
set -eu

ROOT="$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd)"
MODE="${1:-}"

if [ "$MODE" = "--help" ] || [ "$MODE" = "-h" ]; then
  echo "Usage:"
  echo "  $0            # DRY-RUN (liste ce qui serait supprimé)"
  echo "  $0 --apply    # supprime réellement"
  exit 0
fi

if [ "$MODE" = "--apply" ]; then
  DO_DELETE=1
  echo "[clean-macos] MODE=APPLY (suppression réelle)"
else
  DO_DELETE=0
  echo "[clean-macos] MODE=DRY-RUN (aucune suppression)"
  echo "             Passe --apply pour supprimer réellement."
fi

cd "$ROOT"

# Conventions Mac à purger :
# - .DS_Store
# - fichiers AppleDouble : ._*
# - dossiers d’archives : __MACOSX, PaxHeader
# Attention : on évite .git/, node_modules/, dist/

echo ""
echo "[clean-macos] Recherche d’artefacts… (hors .git/, node_modules/, dist/)"

# Liste des cibles (robuste BusyBox : pas de -print0/-0)
find . \
  \( -path "./.git" -o -path "./.git/*" -o -path "./node_modules" -o -path "./node_modules/*" -o -path "./dist" -o -path "./dist/*" \) -prune -o \
  \( -name ".DS_Store" -o -name "._*" -o -name "__MACOSX" -o -name "PaxHeader" \) \
  -print > /tmp/macos_artifacts.$$ || true

COUNT="$(wc -l < /tmp/macos_artifacts.$$ | tr -d ' ')"
if [ "${COUNT:-0}" = "0" ]; then
  echo "[clean-macos] OK: aucun artefact détecté."
  rm -f /tmp/macos_artifacts.$$
  exit 0
fi

echo "[clean-macos] Trouvé: $COUNT"
sed 's|^\./||' /tmp/macos_artifacts.$$ | head -n 200
if [ "$COUNT" -gt 200 ]; then
  echo "[clean-macos] … (liste tronquée à 200)"
fi

if [ "$DO_DELETE" -ne 1 ]; then
  echo ""
  echo "[clean-macos] DRY-RUN terminé. Pour supprimer:"
  echo "  $0 --apply"
  rm -f /tmp/macos_artifacts.$$
  exit 0
fi

echo ""
echo "[clean-macos] Suppression…"
# Suppression : fichiers + dossiers (si dossier, rm -rf)
# (on re-lit la liste pour éviter de re-run find)
while IFS= read -r p; do
  [ -z "$p" ] && continue
  if [ -d "$p" ]; then
    rm -rf "$p"
  else
    rm -f "$p"
  fi
done < /tmp/macos_artifacts.$$

rm -f /tmp/macos_artifacts.$$
echo "[clean-macos] OK: suppression terminée."
