Tiles: Fortschritts-Snapshot-Skript (Stufe/Balken/ETA) für Build-Monitoring + .gitignore
This commit is contained in:
parent
d11794355c
commit
29076bcdff
2 changed files with 56 additions and 0 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
|
@ -19,3 +19,5 @@ tiles/build/
|
|||
*.pmtiles
|
||||
*.osm.pbf
|
||||
*.mbtiles
|
||||
tiles/build.log
|
||||
tiles/.DS_Store
|
||||
|
|
|
|||
54
tiles/progress.sh
Executable file
54
tiles/progress.sh
Executable file
|
|
@ -0,0 +1,54 @@
|
|||
#!/bin/bash
|
||||
# Ein Fortschritts-Snapshot für den Tile-Build. Gibt EINE Zeile aus:
|
||||
# STAGE=<1|2|3|4|DONE> PCT=<n> LABEL=<menschlich, mit Balken + ETA>
|
||||
B=tiles/build
|
||||
LOG=tiles/build.log
|
||||
EXP_DL=$((24 * 1024 * 1024 * 1024)) # ~24 GB erwartete Quell-/Merge-Summe (15 Länder)
|
||||
EXP_PLAN_SEC=$((90 * 60)) # ~90 Min planetiler-Schätzung (Mittel-Europa)
|
||||
now=$(date +%s)
|
||||
|
||||
_bytes() { local s=0 f; for f in "$@"; do [ -f "$f" ] && s=$((s + $(stat -f%z "$f" 2>/dev/null || echo 0))); done; echo "$s"; }
|
||||
_birth() { if [ -f "$1" ]; then stat -f%B "$1" 2>/dev/null || echo "$now"; else echo "$now"; fi; }
|
||||
_mtime() { if [ -f "$1" ]; then stat -f%m "$1" 2>/dev/null || echo "$now"; else echo "$now"; fi; }
|
||||
_bar() { local p=$1 n i out=""; n=$((p * 20 / 100)); [ $n -gt 20 ] && n=20; [ $n -lt 0 ] && n=0
|
||||
for ((i=0;i<20;i++)); do [ $i -lt $n ] && out+="█" || out+="░"; done; printf "%s" "$out"; }
|
||||
_eta() { local s=$1; [ "$s" -lt 0 ] 2>/dev/null && s=0
|
||||
if [ "$s" -ge 3600 ]; then printf "~%dh %dm" $((s/3600)) $(((s%3600)/60))
|
||||
elif [ "$s" -ge 60 ]; then printf "~%d Min" $((s/60)); else printf "~%ds" "$s"; fi; }
|
||||
_gb() { awk "BEGIN{printf \"%.1f\", $1/1073741824}"; }
|
||||
|
||||
if grep -q "Tiles gebaut" "$LOG" 2>/dev/null; then
|
||||
sz=$(_bytes "$B/dach.pmtiles"); echo "STAGE=DONE PCT=100 LABEL=Fertig — dach.pmtiles $(_gb $sz) GB"; exit 0
|
||||
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
|
||||
fi
|
||||
|
||||
if [ -f "$B/dach.osm.pbf" ]; then
|
||||
b=$(_bytes "$B/dach.osm.pbf"); start=$(_birth "$B/dach.osm.pbf"); el=$((now - start)); [ $el -lt 1 ] && el=1
|
||||
pct=$((b * 100 / EXP_DL)); [ $pct -gt 99 ] && pct=99
|
||||
rate=$((b / el)); [ $rate -lt 1 ] && rate=1; eta=$(((EXP_DL - b) / rate))
|
||||
echo "STAGE=3 PCT=$pct LABEL=osmium time-filter (dedup) $(_bar $pct) ${pct}% · $(_gb $b) GB · ETA $(_eta $eta)"; exit 0
|
||||
fi
|
||||
|
||||
if [ -f "$B/dach-hist.osm.pbf" ]; then
|
||||
b=$(_bytes "$B/dach-hist.osm.pbf"); start=$(_birth "$B/dach-hist.osm.pbf"); el=$((now - start)); [ $el -lt 1 ] && el=1
|
||||
pct=$((b * 100 / EXP_DL)); [ $pct -gt 99 ] && pct=99
|
||||
rate=$((b / el)); [ $rate -lt 1 ] && rate=1; eta=$(((EXP_DL - b) / rate))
|
||||
echo "STAGE=2 PCT=$pct LABEL=osmium merge (Grenz-Nodes) $(_bar $pct) ${pct}% · $(_gb $b) GB · ETA $(_eta $eta)"; exit 0
|
||||
fi
|
||||
|
||||
# Stufe 1: Download
|
||||
files=$(ls "$B"/*.osm.pbf 2>/dev/null | grep -v dach)
|
||||
b=$(_bytes $files); start=$(_birth "$LOG"); el=$((now - start)); [ $el -lt 1 ] && el=1
|
||||
pct=$((b * 100 / EXP_DL)); [ $pct -gt 99 ] && pct=99
|
||||
rate=$((b / el)); [ $rate -lt 1 ] && rate=1; eta=$(((EXP_DL - b) / rate))
|
||||
ndone=$(echo "$files" | grep -c .)
|
||||
cur=$(grep -E "^ [a-z]" "$LOG" 2>/dev/null | tail -1 | tr -d ' ')
|
||||
echo "STAGE=1 PCT=$pct LABEL=Download $(_bar $pct) ${pct}% · ${ndone}/15 Länder (${cur}) · $(_gb $b)/24 GB · ETA $(_eta $eta)"
|
||||
Loading…
Add table
Add a link
Reference in a new issue