feat: agents via Docker et rapport des modifications appliquées
This commit is contained in:
parent
27297dbb77
commit
1add88bcbb
145
scripts/agents/run.sh
Normal file → Executable file
145
scripts/agents/run.sh
Normal file → Executable 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"
|
||||||
|
@ -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"
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user