#!/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."