feat: agents via Docker et rapport des modifications appliquées

This commit is contained in:
Debian 2025-08-28 11:11:47 +00:00
parent 27297dbb77
commit 1add88bcbb
2 changed files with 73 additions and 87 deletions

145
scripts/agents/run.sh Normal file → Executable file
View File

@ -12,98 +12,83 @@ fi
DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
TARGET_DIR="${1:-.}" TARGET_DIR="${1:-.}"
OUTPUT_DIR="${2:-tests/reports/agents}" OUTPUT_DIR="${2:-tests/reports/agents}"
AGENT="${3:-all}"
mkdir -p "$OUTPUT_DIR" 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 status --porcelain || true) > "$before_status_file" 2>/dev/null || true
popd >/dev/null || true
usage() { usage() {
cat <<USAGE cat <<USAGE
Usage: $0 [target_dir] [output_dir] [agent] Usage: $0 [target_dir] [output_dir] [agent]
Agents: Agents: fondation, structure, documentation, donnees-csv, documents-bureautiques,
Fondamentaux: fondation, structure tests, performance, qualite-technique/quality-tech, dependances, compilation,
Documentation: documentation, donnees-csv, documents-bureautiques resolution, ssh-scripts, frontend, open-source, gitea, versionnage,
Tests: tests, performance securite, deploiement, sync-template, derogations-locales, runner, all
Techniques: qualite-technique, quality-tech, dependances, compilation, resolution, ssh-scripts
Frontend: frontend
Open source et CI: open-source, gitea, versionnage, securite, deploiement
Synchronisation: sync-template, derogations-locales
Runner: runne
all
Par défaut: all
USAGE USAGE
} }
AGENT="${3:-all}" run_agent() {
local script_name="$1"
"$DIR/${script_name}" "$TARGET_DIR" "$OUTPUT_DIR" || true
}
case "$AGENT" in case "$AGENT" in
runner) runner) run_agent "runner_agent.sh" ;;
"$DIR/runner_agent.sh" "$TARGET_DIR" "$OUTPUT_DIR" ;; quality-tech|qualite-technique) run_agent "quality_tech.sh" ;;
quality-tech|qualite-technique) qualite-formelle|fondation) "$DIR/qualite_formelle.sh" "$TARGET_DIR" "$OUTPUT_DIR" || true; "$DIR/fondation_agent.sh" "$TARGET_DIR" "$OUTPUT_DIR" || true ;;
"$DIR/quality_tech.sh" "$TARGET_DIR" "$OUTPUT_DIR" ;; structure) run_agent "structure_agent.sh" ;;
qualite-formelle|fondation) tests) run_agent "tests_agent.sh" ;;
"$DIR/qualite_formelle.sh" "$TARGET_DIR" "$OUTPUT_DIR" || "$DIR/fondation_agent.sh" "$TARGET_DIR" "$OUTPUT_DIR" ;; performance) run_agent "performance_agent.sh" ;;
structure) documentation) run_agent "documentation_agent.sh" ;;
"$DIR/structure_agent.sh" "$TARGET_DIR" "$OUTPUT_DIR" ;; donnees-csv) run_agent "donnees_csv_agent.sh" ;;
tests) documents-bureautiques)run_agent "documents_bureautiques_agent.sh" ;;
"$DIR/tests_agent.sh" "$TARGET_DIR" "$OUTPUT_DIR" ;; securite) run_agent "security_agent.sh" ;;
performance) deploiement) run_agent "deployment_agent.sh" ;;
"$DIR/performance_agent.sh" "$TARGET_DIR" "$OUTPUT_DIR" ;; dependances) run_agent "dependances_agent.sh" ;;
documentation) compilation) run_agent "compilation_agent.sh" ;;
"$DIR/documentation_agent.sh" "$TARGET_DIR" "$OUTPUT_DIR" ;; resolution) run_agent "resolution_agent.sh" ;;
donnees-csv) ssh-scripts) run_agent "ssh_scripts_agent.sh" ;;
"$DIR/donnees_csv_agent.sh" "$TARGET_DIR" "$OUTPUT_DIR" ;; frontend) run_agent "frontend_agent.sh" ;;
documents-bureautiques) open-source) run_agent "open_source_agent.sh" ;;
"$DIR/documents_bureautiques_agent.sh" "$TARGET_DIR" "$OUTPUT_DIR" ;; gitea) run_agent "gitea_agent.sh" ;;
securite) versionnage) run_agent "versionnage_agent.sh" ;;
"$DIR/security_agent.sh" "$TARGET_DIR" "$OUTPUT_DIR" ;; sync-template) run_agent "sync_template_agent.sh" ;;
deploiement) derogations-locales) run_agent "derogations_locales_agent.sh" ;;
"$DIR/deployment_agent.sh" "$TARGET_DIR" "$OUTPUT_DIR" ;;
dependances)
"$DIR/dependances_agent.sh" "$TARGET_DIR" "$OUTPUT_DIR" ;;
compilation)
"$DIR/compilation_agent.sh" "$TARGET_DIR" "$OUTPUT_DIR" ;;
resolution)
"$DIR/resolution_agent.sh" "$TARGET_DIR" "$OUTPUT_DIR" ;;
ssh-scripts)
"$DIR/ssh_scripts_agent.sh" "$TARGET_DIR" "$OUTPUT_DIR" ;;
frontend)
"$DIR/frontend_agent.sh" "$TARGET_DIR" "$OUTPUT_DIR" ;;
open-source)
"$DIR/open_source_agent.sh" "$TARGET_DIR" "$OUTPUT_DIR" ;;
gitea)
"$DIR/gitea_agent.sh" "$TARGET_DIR" "$OUTPUT_DIR" ;;
versionnage)
"$DIR/versionnage_agent.sh" "$TARGET_DIR" "$OUTPUT_DIR" ;;
sync-template)
"$DIR/sync_template_agent.sh" "$TARGET_DIR" "$OUTPUT_DIR" ;;
derogations-locales)
"$DIR/derogations_locales_agent.sh" "$TARGET_DIR" "$OUTPUT_DIR" ;;
all) all)
"$DIR/runner_agent.sh" "$TARGET_DIR" "$OUTPUT_DIR" || true for a in \
"$DIR/quality_tech.sh" "$TARGET_DIR" "$OUTPUT_DIR" runner_agent.sh quality_tech.sh qualite_formelle.sh fondation_agent.sh structure_agent.sh \
"$DIR/qualite_formelle.sh" "$TARGET_DIR" "$OUTPUT_DIR" tests_agent.sh performance_agent.sh documentation_agent.sh donnees_csv_agent.sh \
"$DIR/fondation_agent.sh" "$TARGET_DIR" "$OUTPUT_DIR" || true documents_bureautiques_agent.sh security_agent.sh deployment_agent.sh dependances_agent.sh \
"$DIR/structure_agent.sh" "$TARGET_DIR" "$OUTPUT_DIR" || true compilation_agent.sh resolution_agent.sh ssh_scripts_agent.sh frontend_agent.sh \
"$DIR/tests_agent.sh" "$TARGET_DIR" "$OUTPUT_DIR" open_source_agent.sh gitea_agent.sh versionnage_agent.sh sync_template_agent.sh derogations_locales_agent.sh; do
"$DIR/performance_agent.sh" "$TARGET_DIR" "$OUTPUT_DIR" || true "$DIR/$a" "$TARGET_DIR" "$OUTPUT_DIR" || true
"$DIR/documentation_agent.sh" "$TARGET_DIR" "$OUTPUT_DIR" done ;;
"$DIR/donnees_csv_agent.sh" "$TARGET_DIR" "$OUTPUT_DIR" || true -h|--help) usage; exit 0 ;;
"$DIR/documents_bureautiques_agent.sh" "$TARGET_DIR" "$OUTPUT_DIR" || true *) echo "Agent inconnu: $AGENT" >&2; usage; exit 2 ;;
"$DIR/security_agent.sh" "$TARGET_DIR" "$OUTPUT_DIR"
"$DIR/deployment_agent.sh" "$TARGET_DIR" "$OUTPUT_DIR"
"$DIR/dependances_agent.sh" "$TARGET_DIR" "$OUTPUT_DIR" || true
"$DIR/compilation_agent.sh" "$TARGET_DIR" "$OUTPUT_DIR" || true
"$DIR/resolution_agent.sh" "$TARGET_DIR" "$OUTPUT_DIR" || true
"$DIR/ssh_scripts_agent.sh" "$TARGET_DIR" "$OUTPUT_DIR" || true
"$DIR/frontend_agent.sh" "$TARGET_DIR" "$OUTPUT_DIR" || true
"$DIR/open_source_agent.sh" "$TARGET_DIR" "$OUTPUT_DIR" || true
"$DIR/gitea_agent.sh" "$TARGET_DIR" "$OUTPUT_DIR" || true
"$DIR/versionnage_agent.sh" "$TARGET_DIR" "$OUTPUT_DIR" || true
"$DIR/sync_template_agent.sh" "$TARGET_DIR" "$OUTPUT_DIR" || true
"$DIR/derogations_locales_agent.sh" "$TARGET_DIR" "$OUTPUT_DIR" || true ;;
-h|--help)
usage; exit 0 ;;
*)
echo "Agent inconnu: $AGENT" >&2; usage; exit 2 ;;
esac esac
# Capture état après et rapport
pushd "$TARGET_DIR" >/dev/null || true
(git 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"
git diff --name-status || true
} > "$changes_report"
popd >/dev/null || true
echo "Agents terminés → $OUTPUT_DIR" echo "Agents terminés → $OUTPUT_DIR"

View File

@ -4,12 +4,13 @@ set -euo pipefail
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
cd "$ROOT_DIR/.." cd "$ROOT_DIR/.."
# Lint Markdown (best effort) # Exécuter les agents via le conteneur CI (Docker Compose)
if command -v npx >/dev/null 2>&1; then if command -v docker >/dev/null 2>&1; then
npx -y markdownlint-cli "**/*.md" --ignore "archive/**" || true docker compose -f docker-compose.ci.yml build
RUNNER_MODE="agents" docker compose -f docker-compose.ci.yml up --abort-on-container-exit
else
echo "Docker requis pour exécuter les agents via conteneur." >&2
exit 2
fi fi
# Agents rapides sur fichiers modifiés echo "[pre-commit] OK (agents via Docker)"
AUTO_FIX="${AUTO_FIX:-1}" SCOPE="${SCOPE:-changed}" scripts/agents/run.sh
echo "[pre-commit] OK"