Mise à jour des URLs du projet et ajout du Makefile

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.
This commit is contained in:
2026-02-28 16:38:58 +01:00
parent 8fb31ea834
commit 3265877508
2 changed files with 169 additions and 2 deletions

View File

@@ -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"]

167
Makefile Normal file
View File

@@ -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)"