#!/usr/bin/env bash set -euo pipefail # Portée des contrôles: all (défaut) ou changed export SCOPE="${SCOPE:-all}" list_changed_paths() { # Renvoie la liste des chemins modifiés (HEAD~1..HEAD), ou vide si non dispo git diff --name-only HEAD~1..HEAD 2>/dev/null || true } is_path_changed() { local path="$1" if [[ "$SCOPE" != "changed" ]]; then return 0; fi local changed changed=$(list_changed_paths) if [[ -z "$changed" ]]; then return 0; fi grep -q "^${path%/}\(/\|$\)" <<<"$changed" && return 0 || return 1 }