136 lines
4.3 KiB
Makefile
136 lines
4.3 KiB
Makefile
.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"
|
|
|