---
description: 
globs: 
alwaysApply: true
---
# Commandes Makefile de Mangarr

Toujours chercher si une commande est disponible dans [Makefile](mdc:Makefile).

## Structure Générale
Le Makefile est organisé en plusieurs sections distinctes :
- Docker 🐳
- Composer 🧙
- Symfony 🎵
- Webpack Encore 📦

## Variables Principales
```makefile
# Exécutables Docker
DOCKER_COMP = docker compose
DOCKER_COMP_EXEC = $(DOCKER_COMP) exec

# Conteneurs
PHP_CONT = $(DOCKER_COMP_EXEC) php
NODE_CONT = $(DOCKER_COMP_EXEC) node

# Exécutables dans les conteneurs
PHP = $(PHP_CONT) php
COMPOSER = $(PHP_CONT) composer
SYMFONY = $(PHP) bin/console
SF_MEMORY = $(PHP) -d memory_limit=256M bin/console
```

## Bonnes Pratiques

### 1. Organisation des Commandes
- Regrouper les commandes par catégorie avec des commentaires clairs
- Utiliser des variables pour les commandes répétitives
- Documenter chaque commande avec `##` pour l'aide automatique
- Préfixer les commandes internes avec `_` (exemple: `_check-deps`)

### 2. Paramètres et Options
- Utiliser la syntaxe `make command p=value` pour les paramètres
- Documenter les paramètres possibles dans les commentaires
- Utiliser `?=` pour les valeurs par défaut modifiables

### 3. Dépendances
- Définir clairement les dépendances entre les commandes
- Utiliser des commandes composées pour les tâches complexes
- Éviter les dépendances circulaires

### 4. Documentation
- Chaque commande doit avoir une description avec `##`
- Inclure des exemples d'utilisation pour les commandes complexes
- Utiliser la commande `help` pour afficher la documentation

## Commandes Disponibles

### Docker 🐳
```makefile
build:      ## Construit les images Docker
up:         ## Démarre les conteneurs
start:      ## Démarre les conteneurs en mode détaché
down:       ## Arrête et supprime les conteneurs
logs:       ## Affiche les logs en temps réel
sh:         ## Se connecte au conteneur PHP
```

### Composer 🧙
```makefile
composer:   ## Exécute une commande composer (c=command)
vendor:     ## Installe les dépendances
```

### Symfony 🎵
```makefile
sf:         ## Liste/exécute les commandes Symfony (c=command)
cc:         ## Vide le cache
migration:  ## Crée une nouvelle migration
fixtures:   ## Charge les fixtures
consume:    ## Consomme les messages de la queue
```

### Webpack Encore 📦
```makefile
npm-install:  ## Installe les dépendances npm
npm-run:      ## Lance le serveur de développement
npm-watch:    ## Surveille les changements
```

## Exemples d'Utilisation

### 1. Installation du Projet
```bash
make install  # Construit et démarre les conteneurs, installe les dépendances
```

### 2. Développement Quotidien
```bash
make start    # Démarre les conteneurs
make npm-watch # Lance la compilation des assets
make consume  # Démarre les workers
```

### 3. Commandes avec Paramètres
```bash
make composer c="require symfony/orm-pack"  # Ajoute une dépendance
make sf c="make:entity"                    # Crée une entité
make test f="ScrapeChapterHandlerTest"     # Lance un test spécifique
```

## Ajout de Nouvelles Commandes

### 1. Structure de Base
```makefile
command-name: ## Description de la commande
	@$(DOCKER_COMP) ... # Commande à exécuter
```

### 2. Avec Paramètres
```makefile
command-with-param: ## Description (p=value)
	@$(eval p ?=)
	@$(DOCKER_COMP) ... $(p)
```

### 3. Commande Composée
```makefile
full-install: build start vendor npm-install ## Description complète
```

## Maintenance

### 1. Nettoyage
- Supprimer les commandes obsolètes
- Mettre à jour les descriptions
- Vérifier les dépendances

### 2. Documentation
- Maintenir la section d'aide à jour
- Ajouter des exemples pour les nouvelles commandes
- Documenter les changements importants

### 3. Tests
- Tester les nouvelles commandes
- Vérifier les dépendances
- Valider les paramètres 