Skip to content

Commit

Permalink
feat: Show download progress (#398)
Browse files Browse the repository at this point in the history
  • Loading branch information
kroese authored Jan 29, 2024
1 parent 88b1667 commit a69c13e
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 2 deletions.
8 changes: 6 additions & 2 deletions src/install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -50,5 +55,4 @@ fi

mv -f "$TMP" "$STORAGE/$BASE"

html "Download finished successfully..."
return 0
29 changes: 29 additions & 0 deletions src/progress.sh
Original file line number Diff line number Diff line change
@@ -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

0 comments on commit a69c13e

Please sign in to comment.