32 lines
900 B
Bash
Executable File
32 lines
900 B
Bash
Executable File
#!/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"
|