97 lines
2.8 KiB
Bash
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
|