feat: Show download progress (#398)

This commit is contained in:
Kroese 2024-01-29 03:53:12 +01:00 committed by GitHub
parent 88b16678d7
commit a69c13e61b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 35 additions and 2 deletions

View file

@ -34,14 +34,19 @@ BASE=$(echo "$BASE" | sed -e 's/[^A-Za-z0-9._-]/_/g')
TMP="$STORAGE/${BASE%.*}.tmp"
rm -f "$TMP"
MSG="Downloading $BASE as boot image..."
MSG="Downloading $BASE ..."
info "$MSG" && html "$MSG"
/run/progress.sh "$TMP" "Downloading $BASE ([P])..." &
{ wget "$BOOT" -O "$TMP" -q --no-check-certificate --show-progress "$PROGRESS"; rc=$?; } || :
fKill "progress.sh"
(( rc != 0 )) && error "Failed to download $BOOT , reason: $rc" && exit 60
[ ! -f "$TMP" ] && error "Failed to download $BOOT" && exit 61
html "Download finished successfully..."
SIZE=$(stat -c%s "$TMP")
if ((SIZE<100000)); then
@ -50,5 +55,4 @@ fi
mv -f "$TMP" "$STORAGE/$BASE"
html "Download finished successfully..."
return 0

29
src/progress.sh Normal file
View file

@ -0,0 +1,29 @@
#!/usr/bin/env bash
set -Eeuo pipefail
escape () {
local s
s=${1//&/\&amp;}
s=${s//</\&lt;}
s=${s//>/\&gt;}
s=${s//'"'/\&quot;}
printf -- %s "$s"
return 0
}
file="$1"
body=$(escape "$2")
info="/run/shm/msg.html"
if [[ "$body" == *"..." ]]; then
body="<p class=\"loading\">${body/.../}</p>"
fi
while true
do
if [ -f "$file" ]; then
size=$(stat -c '%s' "$file" | numfmt --to=si --suffix=B)
echo "${body//(\[P\])/($size)}"> "$info"
fi
sleep 1
done