Debian 6ced5d2923
Some checks failed
4NK Template Sync / check-and-sync (push) Has been cancelled
feat: Mise à jour de l'index de documentation et suppression des templates génériques
2025-08-29 16:29:55 +00:00

117 lines
4.6 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
# Chargement env utilisateur (~/.4nk_template/.env)
"$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)/env/ensure_env.sh" || true
if [[ -f "${HOME}/.4nk_template/.env" ]]; then
set -a
. "${HOME}/.4nk_template/.env"
set +a
fi
DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
TARGET_DIR="${1:-.}"
OUTPUT_DIR="${2:-tests/reports/agents}"
AGENT="${3:-all}"
mkdir -p "$OUTPUT_DIR"
# Capture état avant
pushd "$TARGET_DIR" >/dev/null || true
before_status_file="$OUTPUT_DIR/.before_status.txt"
after_status_file="$OUTPUT_DIR/.after_status.txt"
changes_report="$OUTPUT_DIR/changes_applied.md"
(git -C "$TARGET_DIR" status --porcelain || true) > "$before_status_file" 2>/dev/null || true
popd >/dev/null || true
usage() {
cat <<USAGE
Usage: $0 [target_dir] [output_dir] [agent]
Agents: fondation, structure, documentation, donnees-csv, documents-bureautiques,
tests, performance, qualite-technique/quality-tech, dependances, compilation,
resolution, ssh-scripts, frontend, open-source, gitea, versionnage,
securite, deploiement, sync-template, derogations-locales, runner, all
USAGE
}
run_agent() {
local script_name="$1"
"$DIR/${script_name}" "$TARGET_DIR" "$OUTPUT_DIR" || true
}
case "$AGENT" in
runner) run_agent "runner_agent.sh" ;;
quality-tech|qualite-technique) run_agent "quality_tech.sh" ;;
qualite-formelle|fondation) "$DIR/qualite_formelle.sh" "$TARGET_DIR" "$OUTPUT_DIR" || true; "$DIR/fondation_agent.sh" "$TARGET_DIR" "$OUTPUT_DIR" || true ;;
structure) run_agent "structure_agent.sh" ;;
tests) run_agent "tests_agent.sh" ;;
performance) run_agent "performance_agent.sh" ;;
documentation) run_agent "documentation_agent.sh" ;;
donnees-csv) run_agent "donnees_csv_agent.sh" ;;
documents-bureautiques)run_agent "documents_bureautiques_agent.sh" ;;
securite) run_agent "security_agent.sh" ;;
deploiement) run_agent "deployment_agent.sh" ;;
dependances) run_agent "dependances_agent.sh" ;;
compilation) run_agent "compilation_agent.sh" ;;
resolution) run_agent "resolution_agent.sh" ;;
ssh-scripts) run_agent "ssh_scripts_agent.sh" ;;
frontend) run_agent "frontend_agent.sh" ;;
open-source) run_agent "open_source_agent.sh" ;;
gitea) run_agent "gitea_agent.sh" ;;
versionnage) run_agent "versionnage_agent.sh" ;;
sync-template) run_agent "sync_template_agent.sh" ;;
derogations-locales) run_agent "derogations_locales_agent.sh" ;;
all)
for a in \
runner_agent.sh quality_tech.sh qualite_formelle.sh fondation_agent.sh structure_agent.sh \
tests_agent.sh performance_agent.sh documentation_agent.sh donnees_csv_agent.sh \
documents_bureautiques_agent.sh security_agent.sh deployment_agent.sh dependances_agent.sh \
compilation_agent.sh resolution_agent.sh ssh_scripts_agent.sh frontend_agent.sh \
open_source_agent.sh gitea_agent.sh versionnage_agent.sh sync_template_agent.sh derogations_locales_agent.sh; do
"$DIR/$a" "$TARGET_DIR" "$OUTPUT_DIR" || true
done ;;
-h|--help) usage; exit 0 ;;
*) echo "Agent inconnu: $AGENT" >&2; usage; exit 2 ;;
esac
# Capture état après et rapport
pushd "$TARGET_DIR" >/dev/null || true
(git -C "$TARGET_DIR" status --porcelain || true) > "$after_status_file" 2>/dev/null || true
{
echo "# Modifications appliquées par les agents"
echo
echo "## Fichiers modifiés/non suivis (avant)"
if [[ -s "$before_status_file" ]]; then sed "s/^/ /" "$before_status_file"; else echo " (aucun)"; fi
echo
echo "## Fichiers modifiés/non suivis (après)"
if [[ -s "$after_status_file" ]]; then sed "s/^/ /" "$after_status_file"; else echo " (aucun)"; fi
echo
echo "## Diff par rapport au dernier commit"
if git -C "$TARGET_DIR" rev-parse --is-inside-work-tree >/dev/null 2>&1; then
git -C "$TARGET_DIR" diff --name-status || true
else
echo "(pas un dépôt git, diff ignoré)"
fi
} > "$changes_report"
popd >/dev/null || true
echo "Agents terminés → $OUTPUT_DIR"
# Affichage des rapports générés
echo
echo "=== RAPPORTS GÉNÉRÉS ==="
if [[ -d "$OUTPUT_DIR" ]]; then
for report in "$OUTPUT_DIR"/*.md; do
if [[ -f "$report" ]]; then
echo
echo "📄 $(basename "$report"):"
echo "----------------------------------------"
cat "$report"
echo "----------------------------------------"
fi
done
else
echo "Aucun rapport généré dans $OUTPUT_DIR"
fi
echo "=== FIN DES RAPPORTS ==="