On essaie de faire démarer un serveur web

This commit is contained in:
2025-09-23 20:54:50 +02:00
parent c316e7f1fe
commit 7e5353abf8
36 changed files with 5132 additions and 49 deletions

190
Makefile Normal file
View File

@@ -0,0 +1,190 @@
# Makefile pour projet Rust + Vue.js
# Variables de configuration
CARGO = cargo
NPM = npm
WEBAPP_DIR = pmoupnp/webapp
DIST_DIR = $(WEBAPP_DIR)/dist
RUST_TARGET = target/release
DOC_DIR = target/doc
BINARY_NAME = PMOMusic
# Couleurs pour l'affichage
GREEN = \033[0;32m
YELLOW = \033[1;33m
RED = \033[0;31m
NC = \033[0m # No Color
.PHONY: all help build release debug test doc webapp clean install dev check fmt clippy watch
# Cible par défaut
all: build
## help: Affiche cette aide
help:
@echo "$(GREEN)Commandes disponibles :$(NC)"
@sed -n 's/^##//p' $(MAKEFILE_LIST) | column -t -s ':' | sed -e 's/^/ /'
## build: Compile tout (Rust + Vue.js)
build: webapp release
@echo "$(GREEN)✓ Build complet terminé$(NC)"
## release: Compile le binaire Rust en mode release
release:
@echo "$(YELLOW)→ Compilation Rust (release)...$(NC)"
$(CARGO) build --release
@echo "$(GREEN)✓ Binaire disponible : $(RUST_TARGET)/$(BINARY_NAME)$(NC)"
## debug: Compile le binaire Rust en mode debug
debug:
@echo "$(YELLOW)→ Compilation Rust (debug)...$(NC)"
$(CARGO) build
@echo "$(GREEN)✓ Binaire disponible : target/debug/$(BINARY_NAME)$(NC)"
## test: Exécute tous les tests Rust
test:
@echo "$(YELLOW)→ Exécution des tests Rust...$(NC)"
$(CARGO) test --all
@echo "$(GREEN)✓ Tests terminés$(NC)"
## test-doc: Teste les exemples dans la documentation
test-doc:
@echo "$(YELLOW)→ Test des exemples de documentation...$(NC)"
$(CARGO) test --doc
@echo "$(GREEN)✓ Tests de documentation terminés$(NC)"
## doc: Génère et ouvre la documentation Rust
doc:
@echo "$(YELLOW)→ Génération de la documentation...$(NC)"
$(CARGO) doc --no-deps --document-private-items --open
@echo "$(GREEN)✓ Documentation générée dans $(DOC_DIR)$(NC)"
## doc-build: Génère la documentation sans l'ouvrir
doc-build:
@echo "$(YELLOW)→ Génération de la documentation...$(NC)"
$(CARGO) doc --no-deps --document-private-items
@echo "$(GREEN)✓ Documentation générée dans $(DOC_DIR)$(NC)"
## webapp: Compile l'application Vue.js
webapp: webapp-install
@echo "$(YELLOW)→ Build Vue.js...$(NC)"
cd $(WEBAPP_DIR) && $(NPM) run build
@echo "$(GREEN)✓ Application Vue.js compilée dans $(DIST_DIR)$(NC)"
## webapp-install: Installe les dépendances npm
webapp-install:
@echo "$(YELLOW)→ Installation des dépendances npm...$(NC)"
cd $(WEBAPP_DIR) && $(NPM) install
@echo "$(GREEN)✓ Dépendances npm installées$(NC)"
## webapp-dev: Lance le serveur de développement Vue.js
webapp-dev:
@echo "$(YELLOW)→ Démarrage du serveur de dev Vue.js...$(NC)"
cd $(WEBAPP_DIR) && $(NPM) run dev
## clean: Nettoie les fichiers de build
clean:
@echo "$(YELLOW)→ Nettoyage...$(NC)"
$(CARGO) clean
rm -rf $(DIST_DIR)
rm -rf $(WEBAPP_DIR)/node_modules
@echo "$(GREEN)✓ Nettoyage terminé$(NC)"
## clean-rust: Nettoie uniquement les builds Rust
clean-rust:
@echo "$(YELLOW)→ Nettoyage Rust...$(NC)"
$(CARGO) clean
@echo "$(GREEN)✓ Nettoyage Rust terminé$(NC)"
## clean-webapp: Nettoie uniquement le build Vue.js
clean-webapp:
@echo "$(YELLOW)→ Nettoyage Vue.js...$(NC)"
rm -rf $(DIST_DIR)
@echo "$(GREEN)✓ Nettoyage Vue.js terminé$(NC)"
## install: Installe le binaire dans ~/.cargo/bin
install: release
@echo "$(YELLOW)→ Installation du binaire...$(NC)"
$(CARGO) install --path .
@echo "$(GREEN)$(BINARY_NAME) installé$(NC)"
## dev: Lance le serveur en mode debug (recompile à chaque changement)
dev:
@echo "$(YELLOW)→ Démarrage en mode développement...$(NC)"
$(CARGO) watch -x run
## check: Vérifie que le code compile sans générer de binaire
check:
@echo "$(YELLOW)→ Vérification du code...$(NC)"
$(CARGO) check --all
@echo "$(GREEN)✓ Code valide$(NC)"
## fmt: Formate le code Rust
fmt:
@echo "$(YELLOW)→ Formatage du code...$(NC)"
$(CARGO) fmt --all
@echo "$(GREEN)✓ Code formaté$(NC)"
## fmt-check: Vérifie le formatage sans modifier
fmt-check:
@echo "$(YELLOW)→ Vérification du formatage...$(NC)"
$(CARGO) fmt --all -- --check
## clippy: Exécute clippy (linter Rust)
clippy:
@echo "$(YELLOW)→ Analyse avec clippy...$(NC)"
$(CARGO) clippy --all-targets --all-features -- -D warnings
@echo "$(GREEN)✓ Analyse clippy terminée$(NC)"
## watch: Recompile automatiquement à chaque changement
watch:
@echo "$(YELLOW)→ Mode watch activé...$(NC)"
$(CARGO) watch -x check
## ci: Exécute toutes les vérifications CI
ci: fmt-check clippy test doc-build webapp
@echo "$(GREEN)✓ Toutes les vérifications CI passées$(NC)"
## run: Lance le binaire en mode debug
run: debug
@echo "$(YELLOW)→ Lancement de l'application...$(NC)"
./target/debug/$(BINARY_NAME)
## run-release: Lance le binaire en mode release
run-release: release
@echo "$(YELLOW)→ Lancement de l'application (release)...$(NC)"
./$(RUST_TARGET)/$(BINARY_NAME)
## size: Affiche la taille du binaire
size:
@echo "$(YELLOW)Taille des binaires :$(NC)"
@if [ -f "target/debug/$(BINARY_NAME)" ]; then \
echo " Debug: $$(du -h target/debug/$(BINARY_NAME) | cut -f1)"; \
fi
@if [ -f "$(RUST_TARGET)/$(BINARY_NAME)" ]; then \
echo " Release: $$(du -h $(RUST_TARGET)/$(BINARY_NAME) | cut -f1)"; \
fi
## deps: Liste les dépendances obsolètes
deps:
@echo "$(YELLOW)→ Vérification des dépendances...$(NC)"
$(CARGO) outdated
## update: Met à jour les dépendances
update:
@echo "$(YELLOW)→ Mise à jour des dépendances Rust...$(NC)"
$(CARGO) update
@echo "$(YELLOW)→ Mise à jour des dépendances npm...$(NC)"
cd $(WEBAPP_DIR) && $(NPM) update
@echo "$(GREEN)✓ Dépendances mises à jour$(NC)"
## bench: Exécute les benchmarks
bench:
@echo "$(YELLOW)→ Exécution des benchmarks...$(NC)"
$(CARGO) bench
## coverage: Génère un rapport de couverture de code
coverage:
@echo "$(YELLOW)→ Génération du rapport de couverture...$(NC)"
$(CARGO) tarpaulin --out Html --output-dir target/coverage
@echo "$(GREEN)✓ Rapport disponible dans target/coverage/index.html$(NC)"