#!/usr/bin/env bash # Lance en local les mêmes vérifications que le CI (.gitea/workflows/). # À exécuter avant de pousser : scripts/check.sh # # Un outil manquant n'est pas bloquant : le check correspondant est ignoré # avec un avertissement (le CI, lui, exécute tout). Le script retourne un # code non nul si une vérification échoue. set -u cd "$(dirname "$0")/.." || exit 1 fail=0 warn=0 step() { printf '\n\033[1m== %s ==\033[0m\n' "$1"; } # need : vérifie la présence d'un outil need() { if ! command -v "$1" >/dev/null 2>&1; then echo "⚠️ '$1' non installé — check ignoré (paquet : $2)" warn=1 return 1 fi } step "PHP lint (*.php, *.php.sample)" if need php php-cli; then php_fail=0 while IFS= read -r f; do if ! php -l "$f" > /dev/null; then echo "❌ $f" php_fail=1 fi done < <(find . -path ./.git -prune -o \( -name '*.php' -o -name '*.php.sample' \) -print) if [ "$php_fail" -eq 0 ]; then echo "✅ PHP OK" else fail=1 fi fi step "JS lint (sw.js, js/*.js)" if need node nodejs; then js_fail=0 for f in sw.js js/*.js; do node --check "$f" || js_fail=1 done if [ "$js_fail" -eq 0 ]; then echo "✅ JS OK" else fail=1 fi fi step "AsciiDoc (README.adoc, DEPLOY.adoc)" if need asciidoctor asciidoctor; then adoc_fail=0 for f in README.adoc DEPLOY.adoc; do [ -f "$f" ] || continue asciidoctor -o "/tmp/check-$$.html" "$f" || adoc_fail=1 done rm -f "/tmp/check-$$.html" if [ "$adoc_fail" -eq 0 ]; then echo "✅ AsciiDoc OK" else fail=1 fi fi step "JSON (site.webmanifest.sample)" if need python3 python3; then if python3 -m json.tool site.webmanifest.sample > /dev/null; then echo "✅ JSON OK" else fail=1 fi fi step "XML (sitemap.xml.sample, browserconfig.xml)" if need xmllint libxml2-utils; then if xmllint --noout sitemap.xml.sample browserconfig.xml; then echo "✅ XML OK" else fail=1 fi fi step "Shellcheck (scripts shell)" if need shellcheck shellcheck; then if shellcheck docs/generate-readme-pdf.sh scripts/check.sh; then echo "✅ Shellcheck OK" else fail=1 fi fi echo if [ "$fail" -ne 0 ]; then echo "❌ Des vérifications ont échoué — corrigez avant de pousser." exit 1 fi if [ "$warn" -ne 0 ]; then echo "⚠️ Checks disponibles OK, mais certains outils manquent (le CI exécutera tout)." else echo "✅ Tous les checks passent." fi