Unverified Commit a69c13e6 authored by Kroese's avatar Kroese Committed by GitHub
Browse files

feat: Show download progress (#398)

parent 88b16678
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -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

src/progress.sh

0 → 100644
+29 −0
Original line number Diff line number Diff line
#!/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