#!/usr/bin/env bash set -euo pipefail # Script pour lancer les agents de 4NK_template sur un projet externe # Usage: ./run_agents_for_project.sh [project_path] [output_dir] PROJECT_PATH="${1:-.}" OUTPUT_DIR="${2:-tests/reports/agents}" TEMPLATE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)" MODULE_LAST_IMAGE_FILE="$(cd "$TEMPLATE_DIR/.." && pwd)/modules/4NK_template/.last_image" if [[ ! -d "$PROJECT_PATH" ]]; then echo "Erreur: Le projet '$PROJECT_PATH' n'existe pas" >&2 exit 1 fi mkdir -p "$PROJECT_PATH/$OUTPUT_DIR" echo "=== Lancement des agents 4NK_template sur: $PROJECT_PATH ===" if ! command -v docker >/dev/null 2>&1; then echo "Docker requis pour exécuter les agents via conteneur." >&2 exit 2 fi # Si une image du module existe, l'utiliser en priorité if [[ -f "$MODULE_LAST_IMAGE_FILE" ]]; then IMAGE_NAME="$(cat "$MODULE_LAST_IMAGE_FILE" | tr -d '\r\n')" echo "Utilisation de l'image du module: $IMAGE_NAME" # Préparer montage du fichier d'env si présent ENV_MOUNT="" if [[ -f "$HOME/.4nk_template/.env" ]]; then ENV_MOUNT="-v $HOME/.4nk_template/.env:/root/.4nk_template/.env:ro" fi # Lancer le conteneur en utilisant l'ENTRYPOINT qui configure safe.directory docker run --rm \ -e RUNNER_MODE=agents \ -e TARGET_DIR=/work \ -e OUTPUT_DIR=/work/$OUTPUT_DIR \ -v "$(realpath "$PROJECT_PATH"):/work" \ $ENV_MOUNT \ "$IMAGE_NAME" || true else echo "Aucune image de module détectée, fallback docker compose dans 4NK_template" cd "$TEMPLATE_DIR" docker compose -f docker-compose.ci.yml build RUNNER_MODE="agents" TARGET_DIR="/work" OUTPUT_DIR="/work/$OUTPUT_DIR" \ docker compose -f docker-compose.ci.yml run --rm project-ci || true fi echo "=== Agents terminés → $PROJECT_PATH/$OUTPUT_DIR ==="