From 32658775080cde47922645712fe5ea3247285ddd Mon Sep 17 00:00:00 2001 From: Eric Coissac Date: Sat, 28 Feb 2026 16:38:58 +0100 Subject: [PATCH] =?UTF-8?q?Mise=20=C3=A0=20jour=20des=20URLs=20du=20projet?= =?UTF-8?q?=20et=20ajout=20du=20Makefile?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Mise à jour des URLs de la page d'accueil et du dépôt dans Cargo.toml Ajout d'un Makefile complet pour gérer les différentes tâches de build, test, documentation, etc. Inclusion des commandes pour le build SIMD, scalar, les tests, la documentation, le formatage, l'analyse clippy, le bench, la couverture, ainsi que les commandes jjnew et jjpush pour la gestion des commits avec jj. --- Cargo.toml | 4 +- Makefile | 167 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 169 insertions(+), 2 deletions(-) create mode 100644 Makefile diff --git a/Cargo.toml b/Cargo.toml index 1a79c61..7e0224f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,8 +4,8 @@ version = "0.1.0" edition = "2021" description = "Utilitaires système pour la gestion des adresses IP et des processus" -homepage = "https://github.com/coissac/pmo" -repository = "https://github.com/coissac/pmo" +homepage = "https://gargoton.petite-maison-orange.fr/pmo/pmoutils" +repository = "https://gargoton.petite-maison-orange.fr/pmo/pmoutils" license = "CECILL-2.1" readme = "README.md" keywords = ["network", "ip", "process", "system"] diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..ce8dbad --- /dev/null +++ b/Makefile @@ -0,0 +1,167 @@ +# Makefile pour pmoutils - crate Rust +CARGO = cargo +CARGO_NIGHTLY = rustup run nightly cargo +FEATURES ?= +RUST_TARGET = target/release +DOC_DIR = target/doc +BINARY_NAME = pmoutils + +GREEN = \033[0;32m +YELLOW = \033[1;33m +BLUE = \033[1;34m +RED = \033[0;31m +NC = \033[0m + +.DEFAULT_GOAL := simd + +.PHONY: all help build release debug test doc clean install check fmt clippy watch simd scalar + +all: build + +help: + @echo "$(GREEN)Commandes disponibles :$(NC)" + @sed -n 's/^##//p' $(MAKEFILE_LIST) | column -t -s ':' | sed -e 's/^/ /' + +build: release + @echo "$(GREEN)✓ Build terminé$(NC)" + +release: + @echo "$(YELLOW)→ Compilation Rust (release)...$(NC)" + $(CARGO) build --release $(FEATURES) + @echo "$(GREEN)✓ Binaire disponible : $(RUST_TARGET)/$(BINARY_NAME)$(NC)" + +debug: + @echo "$(YELLOW)→ Compilation Rust (debug)...$(NC)" + $(CARGO) build $(FEATURES) + @echo "$(GREEN)✓ Binaire disponible : target/debug/$(BINARY_NAME)$(NC)" + +test: + @echo "$(YELLOW)→ Exécution des tests Rust...$(NC)" + $(CARGO) test --all + @echo "$(GREEN)✓ Tests terminés$(NC)" + +simd: + @echo "$(YELLOW)→ Build SIMD (nightly)...$(NC)" + $(MAKE) release CARGO="$(CARGO_NIGHTLY)" FEATURES="--features simd" + @echo "$(GREEN)✓ Build SIMD terminé$(NC)" + +scalar: + @echo "$(YELLOW)→ Build scalaire...$(NC)" + $(MAKE) release FEATURES="" + @echo "$(GREEN)✓ Build scalaire terminé$(NC)" + +test-doc: + @echo "$(YELLOW)→ Test des exemples de documentation...$(NC)" + $(CARGO) test --doc + @echo "$(GREEN)✓ Tests de documentation terminés$(NC)" + +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: + @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)" + +clean: + @echo "$(YELLOW)→ Nettoyage...$(NC)" + $(CARGO) clean + @echo "$(GREEN)✓ Nettoyage terminé$(NC)" + +install: release + @echo "$(YELLOW)→ Installation du binaire...$(NC)" + $(CARGO) install --path . + @echo "$(GREEN)✓ $(BINARY_NAME) installé$(NC)" + +check: + @echo "$(YELLOW)→ Vérification du code...$(NC)" + $(CARGO) check --all + @echo "$(GREEN)✓ Code valide$(NC)" + +fmt: + @echo "$(YELLOW)→ Formatage du code...$(NC)" + $(CARGO) fmt --all + @echo "$(GREEN)✓ Code formaté$(NC)" + +fmt-check: + @echo "$(YELLOW)→ Vérification du formatage...$(NC)" + $(CARGO) fmt --all -- --check + +clippy: + @echo "$(YELLOW)→ Analyse avec clippy...$(NC)" + $(CARGO) clippy --all-targets --all-features -- -D warnings + @echo "$(GREEN)✓ Analyse clippy terminée$(NC)" + +watch: + @echo "$(YELLOW)→ Mode watch activé...$(NC)" + $(CARGO) watch -x check + +ci: fmt-check clippy test doc-build + @echo "$(GREEN)✓ Toutes les vérifications CI passées$(NC)" + +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: + @echo "$(YELLOW)→ Vérification des dépendances...$(NC)" + $(CARGO) outdated + +update: + @echo "$(YELLOW)→ Mise à jour des dépendances...$(NC)" + $(CARGO) update + @echo "$(GREEN)✓ Dépendances mises à jour$(NC)" + +bump-version: + @echo "$(YELLOW)→ Incrémentation de la version...$(NC)" + @current=$$(grep '^version = ' Cargo.toml | head -n 1 | sed 's/version = "\(.*\)"/\1/'); \ + echo " Version actuelle: $$current"; \ + major=$$(echo $$current | cut -d. -f1); \ + minor=$$(echo $$current | cut -d. -f2); \ + patch=$$(echo $$current | cut -d. -f3); \ + new_patch=$$((patch + 1)); \ + new_version="$$major.$$minor.$$new_patch"; \ + echo " Nouvelle version: $$new_version"; \ + sed -i.bak "s/^version = \"$$current\"/version = \"$$new_version\"/" Cargo.toml && \ + rm Cargo.toml.bak && \ + echo "$$new_version" > version.txt + @echo "$(GREEN)✓ Version mise à jour dans Cargo.toml et version.txt$(NC)" + +version.txt: Cargo.toml + @echo "$(YELLOW)→ Synchronisation de version.txt...$(NC)" + @grep '^version = ' Cargo.toml | head -n 1 | sed 's/version = "\(.*\)"/\1/' > version.txt + @echo "$(GREEN)✓ version.txt synchronisé: $$(cat version.txt)$(NC)" + +bench: + @echo "$(YELLOW)→ Exécution des benchmarks...$(NC)" + $(CARGO) bench + +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)" + +jjnew: + @echo "$(YELLOW)→ Création d'un nouveau commit...$(NC)" + @echo "$(BLUE)→ Documentation du commit courrant...$(NC)" + @jj auto-describe + @echo "$(BLUE)→ C'est fait.$(NC)" + @jj new + @echo "$(GREEN)✓ nouveau commit créé$(NC)" + +jjpush: bump-version + @echo "$(YELLOW)→ Push du commit sur le dépôt...$(NC)" + @echo "$(BLUE)→ Documentation du commit courrant...$(NC)" + @jj auto-describe + @echo "$(BLUE)→ C'est fait.$(NC)" + @jj git push --change @ + @echo "$(GREEN)✓ Commit pushé sur le dépôt$(NC)" + +jjfetch: + @echo "$(YELLOW)→ Pull des derniers commits...$(NC)" + @jj git fetch + @jj new main@origin + @echo "$(GREEN)✓ Derniers commits pullés$(NC)"