diff --git a/tiles/progress.sh b/tiles/progress.sh index eefeb2d..a993ba1 100755 --- a/tiles/progress.sh +++ b/tiles/progress.sh @@ -22,12 +22,18 @@ if grep -q "Tiles gebaut" "$LOG" 2>/dev/null; then fi if grep -q "→ planetiler" "$LOG" 2>/dev/null; then - start=$(_mtime "$B/dach.osm.pbf"); el=$((now - start)); [ $el -lt 1 ] && el=1 - pp=$(grep -oE "[0-9]{1,3}%" "$LOG" 2>/dev/null | tail -1 | tr -d '%') - if [ -n "$pp" ] && [ "$pp" -ge 0 ] 2>/dev/null && [ "$pp" -le 100 ] 2>/dev/null; then pct=$pp; else pct=$((el * 100 / EXP_PLAN_SEC)); fi - [ $pct -gt 95 ] && pct=95; [ $pct -lt 1 ] && pct=1 - eta=$((el * (100 - pct) / pct)) - echo "STAGE=4 PCT=$pct LABEL=planetiler (Vektor-Tiles) $(_bar $pct) ${pct}% · ETA $(_eta $eta)"; exit 0 + # Echte planetiler-Zeile parsen (ANSI/\r entfernen). Phasen: osm_pass1(nodes)→osm_pass2(ways/rels)→ + # write/archive(tiles). Eine ehrliche Gesamt-% gibt planetiler nicht her → Phase + Phasen-% zeigen, + # KEINE erfundene Zeit-ETA (war zuvor Quatsch wegen Log-Rauschen). + line=$(sed 's/\x1b\[[0-9;]*m//g; s/\r/\n/g' "$LOG" 2>/dev/null | grep -aE "^[0-9]+:[0-9]{2}:[0-9]{2} .*INF \[" | tail -1) + phase=$(printf '%s' "$line" | sed -nE 's/.*INF \[([a-z0-9_]+)[]:].*/\1/p') + if printf '%s' "$line" | grep -q "ways:"; then + pct=$(printf '%s' "$line" | sed -nE 's/.*ways: \[[^]]*[[:space:]]([0-9]{1,3})%[[:space:]].*/\1/p') + else + pct=$(printf '%s' "$line" | grep -oE "[0-9]{1,3}%" | tail -1 | tr -d '%') + fi + [ -z "$pct" ] && pct=0 + echo "STAGE=4 PCT=$pct LABEL=planetiler · ${phase:-läuft} $(_bar $pct) ${pct}% (Phasen-Fortschritt, Gesamt-ETA unsicher)"; exit 0 fi if [ -f "$B/dach.osm.pbf" ]; then