#!/usr/bin/env bash # Utilisation : ./build-progress.sh # Nombre total de fichiers à compiler (estimation) total=$(find workdir/ -type f -name '*.o' 2>/dev/null | wc -l) [ "$total" -eq 0 ] && total=30000 # valeur par défaut si aucune estimation count=0 # Couleurs et mise en forme bar_length=50 draw_bar() { local progress=$((count * bar_length / total)) local done=$(printf "%0.s#" $(seq 1 $progress)) local left=$(printf "%0.s-" $(seq 1 $((bar_length - progress)))) printf "\r[%s%s] %d%% (%d/%d)" "$done" "$left" $((count * 100 / total)) "$count" "$total" } # Lancer make et suivre sa sortie stdbuf -oL make -j$(nproc) "$@" 2>&1 | while IFS= read -r line; do # Détecter une compilation (simple heuristique) if [[ "$line" =~ (Compiling|CXX|CC|Linking) ]]; then ((count++)) draw_bar fi echo "$line" done echo echo "✅ Compilation terminée"