refactorisation script
This commit is contained in:
135
Makefile
Normal file
135
Makefile
Normal file
@@ -0,0 +1,135 @@
|
||||
.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"
|
||||
|
||||
Reference in New Issue
Block a user