Kaynağa Gözat

feat: Check diskspace before download (#583)

Kroese 1 yıl önce
ebeveyn
işleme
577369a54f
2 değiştirilmiş dosya ile 10 ekleme ve 2 silme
  1. 1 1
      Dockerfile
  2. 9 1
      src/mido.sh

+ 1 - 1
Dockerfile

@@ -1,5 +1,5 @@
 FROM scratch
-COPY --from=qemux/qemu-docker:5.12 / /
+COPY --from=qemux/qemu-docker:5.13 / /
 
 ARG VERSION_ARG="0.0"
 ARG DEBCONF_NOWARNINGS="yes"

+ 9 - 1
src/mido.sh

@@ -418,6 +418,7 @@ getESD() {
   { wget "$winCatalog" -O "$dir/$wFile" -q --timeout=30; rc=$?; } || :
 
   msg="Failed to download $winCatalog"
+  (( rc == 3 )) && error "$msg , cannot write file (disk full?)" && return 1
   (( rc == 4 )) && error "$msg , network failure!" && return 1
   (( rc == 8 )) && error "$msg , server issued an error response!" && return 1
   (( rc != 0 )) && error "$msg , reason: $rc" && return 1
@@ -509,10 +510,16 @@ downloadFile() {
   local size="$4"
   local lang="$5"
   local desc="$6"
-  local rc total progress domain dots
+  local rc total progress domain dots space folder
 
   rm -f "$iso"
 
+  if [ -n "$size" ] && [[ "$size" != "0" ]]; then
+    folder=$(dirname -- "$iso")
+    space=$(df --output=avail -B 1 "$folder" | tail -n 1)
+    (( size > space )) && error "Not enough free space left to download file!" && return 1
+  fi
+
   # Check if running with interactive TTY or redirected to docker log
   if [ -t 1 ]; then
     progress="--progress=bar:noscroll"
@@ -548,6 +555,7 @@ downloadFile() {
   fi
 
   msg="Failed to download $url"
+  (( rc == 3 )) && error "$msg , cannot write file (disk full?)" && return 1
   (( rc == 4 )) && error "$msg , network failure!" && return 1
   (( rc == 8 )) && error "$msg , server issued an error response!" && return 1