.PHONY: help build run run-verbose test clean install dev # Variables IMAGE_NAME = pdf2csv IMAGE_TAG = latest CONTAINER_NAME = pdf2csv-converter DATA_DIR = ./data help: ## Affiche cette aide @echo "Commandes disponibles :" @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf " \033[36m%-20s\033[0m %s\n", $$1, $$2}' build: ## Construit l'image Docker @echo "🔨 Construction de l'image Docker..." docker build -t $(IMAGE_NAME):$(IMAGE_TAG) . @echo "✅ Image construite : $(IMAGE_NAME):$(IMAGE_TAG)" run: ## Lance la conversion (PDFs dans ./data) @echo "🚀 Lancement de la conversion..." @mkdir -p $(DATA_DIR) docker run --rm \ --name $(CONTAINER_NAME) \ -v $(PWD)/$(DATA_DIR):/data \ $(IMAGE_NAME):$(IMAGE_TAG) run-verbose: ## Lance la conversion en mode verbeux @echo "🚀 Lancement de la conversion (mode verbeux)..." @mkdir -p $(DATA_DIR) docker run --rm \ --name $(CONTAINER_NAME) \ -v $(PWD)/$(DATA_DIR):/data \ $(IMAGE_NAME):$(IMAGE_TAG) --verbose run-custom: ## Lance avec configuration personnalisée (utilise .env) @echo "🚀 Lancement avec configuration personnalisée..." @mkdir -p $(DATA_DIR) docker run --rm \ --name $(CONTAINER_NAME) \ -v $(PWD)/$(DATA_DIR):/data \ --env-file .env \ $(IMAGE_NAME):$(IMAGE_TAG) --verbose run-no-clean: ## Lance sans nettoyer les fichiers temporaires @echo "🚀 Lancement (conservation des fichiers temporaires)..." @mkdir -p $(DATA_DIR) docker run --rm \ --name $(CONTAINER_NAME) \ -v $(PWD)/$(DATA_DIR):/data \ $(IMAGE_NAME):$(IMAGE_TAG) --no-clean --verbose test: build ## Construit et teste avec des PDFs d'exemple @echo "🧪 Test de l'application..." @mkdir -p test_data @echo "⚠️ Placez des PDFs dans ./test_data/ puis appuyez sur Entrée" @read dummy docker run --rm \ --name $(CONTAINER_NAME)-test \ -v $(PWD)/test_data:/data \ $(IMAGE_NAME):$(IMAGE_TAG) --verbose clean: ## Nettoie les fichiers générés @echo "🧹 Nettoyage..." @rm -rf $(DATA_DIR)/*_brut.csv @rm -rf $(DATA_DIR)/*_final.csv @rm -rf $(DATA_DIR)/fusion_total.csv @rm -rf test_data/ @echo "✅ Nettoyage terminé" clean-all: clean ## Nettoie tout (y compris l'image Docker) @echo "🧹 Nettoyage complet..." docker rmi $(IMAGE_NAME):$(IMAGE_TAG) 2>/dev/null || true @echo "✅ Nettoyage complet terminé" install: ## Installe les dépendances Python localement @echo "📦 Installation des dépendances..." pip install -r requirements.txt @echo "✅ Dépendances installées" dev: install ## Configure l'environnement de développement @echo "🔧 Configuration de l'environnement de développement..." @mkdir -p $(DATA_DIR) @mkdir -p test_data @if [ ! -f .env ]; then cp config.example.env .env; echo "✅ Fichier .env créé"; fi @echo "✅ Environnement de développement prêt" @echo "" @echo "Commandes utiles :" @echo " python convert.py ./data --verbose" @echo " python convert.py --help" shell: ## Ouvre un shell dans le conteneur @echo "🐚 Ouverture d'un shell..." docker run --rm -it \ --name $(CONTAINER_NAME)-shell \ -v $(PWD)/$(DATA_DIR):/data \ --entrypoint /bin/bash \ $(IMAGE_NAME):$(IMAGE_TAG) logs: ## Affiche les logs du dernier run @echo "📋 Logs du dernier conteneur..." @docker logs $(CONTAINER_NAME) 2>/dev/null || echo "❌ Aucun conteneur en cours" status: ## Affiche le statut de l'environnement @echo "📊 Statut de l'environnement" @echo "" @echo "Image Docker :" @docker images $(IMAGE_NAME):$(IMAGE_TAG) --format " - {{.Repository}}:{{.Tag}} ({{.Size}})" || echo " ❌ Image non construite" @echo "" @echo "Répertoire de données :" @if [ -d $(DATA_DIR) ]; then \ echo " ✅ $(DATA_DIR) existe"; \ echo " 📄 PDFs : $$(find $(DATA_DIR) -name '*.pdf' 2>/dev/null | wc -l)"; \ echo " 📊 CSVs : $$(find $(DATA_DIR) -name '*.csv' 2>/dev/null | wc -l)"; \ else \ echo " ❌ $(DATA_DIR) n'existe pas"; \ fi @echo "" @echo "Configuration :" @if [ -f .env ]; then \ echo " ✅ Fichier .env présent"; \ else \ echo " ⚠️ Fichier .env absent (utilise config.example.env)"; \ fi example: ## Crée un exemple de configuration @echo "📝 Création d'un exemple..." @cp config.example.env .env @mkdir -p $(DATA_DIR) @echo "✅ Fichier .env créé" @echo "✅ Répertoire $(DATA_DIR) créé" @echo "" @echo "Prochaines étapes :" @echo " 1. Placez vos PDFs dans ./$(DATA_DIR)/" @echo " 2. (Optionnel) Éditez .env pour personnaliser" @echo " 3. Lancez : make run"