Bump version to 0.1.1 and enhance IP detection with timeout support - Update version in Cargo.toml and Cargo.lock to 0.1.1 - Update .DEFAULT_GOAL in Makefile to 'release' - Update Makefile to synchronize version in README.md - Change default DNS port from 80 to 53 in IP detection - Add `guess_local_ip_with_timeout` function with configurable timeout - Add `list_all_ips` function to list all non-loopback IP addresses - Add `find_process_using_port` function to identify processes using specific ports - Reorder parameters in `find_process_using_port` for better API design - Update documentation and examples in README.md and lib.rs - Add version.txt file to track current version - Minor code improvements and test updates
172 lines
5.4 KiB
Makefile
172 lines
5.4 KiB
Makefile
# 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 := release
|
|
|
|
.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 && \
|
|
sed -i.bak "s/pmoutils = \"$$major\.\"/pmoutils = \"$$new_version\"/" README.md && \
|
|
rm README.md.bak
|
|
@echo "$(GREEN)✓ Version mise à jour dans Cargo.toml, version.txt et README.md$(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 && \
|
|
sed -i.bak "s/pmoutils = \"$$major\.\"/pmoutils = \"$$new_version\"/" README.md && \
|
|
rm README.md.bak
|
|
@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 json --output-dir target/coverage
|
|
@echo "$(GREEN)✓ Rapport disponible dans target/coverage/tarpaulin-report.json$(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)"
|