Files
courcellematthi/verifier-depot.sh
T
2026-08-05 22:40:03 +02:00

97 lines
2.8 KiB
Bash

#!/usr/bin/env bash
# =============================================================================
# verifier-depot.sh — Contrôle avant push
# -----------------------------------------------------------------------------
# Vérifie que tous les fichiers nécessaires au build Docker sont bien suivis
# par Git. Les fichiers cachés (.dockerignore, .well-known/) sont ceux qui
# disparaissent le plus facilement lors d'une copie manuelle ou d'une
# décompression.
#
# Usage : bash verifier-depot.sh
# =============================================================================
set -u
REQUIS=(
# --- Build ---
"Dockerfile"
".dockerignore"
"deploy/nginx.conf"
# --- Site ---
"index.html"
"favicon.svg"
"favicon.ico"
"robots.txt"
"sitemap.xml"
"llms.txt"
"humans.txt"
"site.webmanifest"
".well-known/security.txt"
# --- Styles ---
"assets/css/tokens.css"
"assets/css/base.css"
"assets/css/layout.css"
"assets/css/components.css"
"assets/css/utilities.css"
"assets/css/print.css"
# --- Scripts ---
"assets/js/main.js"
"assets/js/modules/navigation.js"
"assets/js/modules/scroll-spy.js"
"assets/js/modules/back-to-top.js"
"assets/js/modules/copy-email.js"
# --- Images ---
"assets/img/og-image.png"
"assets/img/apple-touch-icon.png"
"assets/img/icon-192.png"
"assets/img/icon-512.png"
"assets/img/icon-maskable-512.png"
"assets/img/safari-pinned-tab.svg"
"assets/img/favicon-16x16.png"
"assets/img/favicon-32x32.png"
"assets/img/favicon-48x48.png"
)
echo "== Fichiers suivis par Git =="
manquants=0
for f in "${REQUIS[@]}"; do
if git ls-files --error-unmatch "$f" >/dev/null 2>&1; then
printf " OK %s\n" "$f"
else
printf " MANQUANT %s\n" "$f"
manquants=$((manquants + 1))
fi
done
echo
echo "== Pièges connus =="
# Le Dockerfile ne doit jamais être exclu : BuildKit applique .dockerignore
# AVANT de lire le Dockerfile, contrairement au builder classique.
if grep -qE '^[[:space:]]*(Dockerfile|\.dockerignore)[[:space:]]*$' .dockerignore 2>/dev/null; then
echo " ERREUR .dockerignore exclut Dockerfile ou .dockerignore"
echo " -> le build echouera avec « transferring dockerfile: 2B »"
manquants=$((manquants + 1))
else
echo " OK .dockerignore n'exclut pas le Dockerfile"
fi
# deploy/ doit rester dans le contexte : le COPY du Dockerfile en depend.
if grep -qE '^[[:space:]]*deploy' .dockerignore 2>/dev/null; then
echo " ERREUR .dockerignore exclut deploy/"
echo " -> COPY deploy/nginx.conf echouera"
manquants=$((manquants + 1))
else
echo " OK deploy/ reste dans le contexte de build"
fi
echo
if [ "$manquants" -eq 0 ]; then
echo "Tout est en ordre. Le push peut etre effectue."
exit 0
else
echo "$manquants probleme(s). Corriger avant de pousser :"
echo " git add -A && git commit -m 'Ajout des fichiers manquants' && git push"
exit 1
fi