feat: Improve wget error reporting (#1854)

This commit is contained in:
Kroese
2026-07-15 10:29:15 +02:00
committed by GitHub
parent 85a7529b4e
commit b1ff5da11a
+57 -14
View File
@@ -523,13 +523,12 @@ getESD() {
local version="$2" local version="$2"
local lang="$3" local lang="$3"
local desc="$4" local desc="$4"
local rc=0
local file result culture local file result culture
local language edition catalog local language edition catalog
local xmlFile="products.xml" local xmlFile="products.xml"
local esdFile="esd_edition.xml" local esdFile="esd_edition.xml"
local filterFile="products_filter.xml" local filterFile="products_filter.xml"
local query local log query rc=0 reason=""
file=$(getCatalog "$version" "file") file=$(getCatalog "$version" "file")
catalog=$(getCatalog "$version" "url") catalog=$(getCatalog "$version" "url")
@@ -551,13 +550,36 @@ getESD() {
return 1 return 1
fi fi
{ wget "$catalog" -O "$dir/$file" -q --timeout=30 --no-http-keep-alive; rc=$?; } || : log=$(mktemp)
msg="Failed to download $catalog" {
(( rc == 3 )) && error "$msg , cannot write file (disk full?)" && return 1 LC_ALL=C wget "$catalog" -O "$dir/$file" --no-verbose --timeout=30 \
(( rc == 4 )) && error "$msg , network failure!" && return 1 --no-http-keep-alive --output-file="$log"
(( rc == 8 )) && error "$msg , server issued an error response!" && return 1 rc=$?
(( rc != 0 )) && error "$msg , reason: $rc" && return 1 } || :
if (( rc != 0 )); then
reason=$(sed -n \
-e 's/^wget: //p' \
-e 's/^[0-9-]\{10\} [0-9:]\{8\} ERROR //p' \
"$log" | tail -n 1)
msg="Failed to download $catalog"
if (( rc == 3 )); then
error "$msg because the file could not be written (disk full?)."
elif [ -n "$reason" ]; then
error "$msg: ${reason%.}."
else
error "$msg with exit status $rc."
fi
rm -f "$log"
return 1
fi
rm -f "$log"
if [[ "$file" == *".xml" ]]; then if [[ "$file" == *".xml" ]]; then
@@ -703,8 +725,10 @@ downloadFile() {
local size="$4" local size="$4"
local lang="$5" local lang="$5"
local desc="$6" local desc="$6"
local reason=""
local msg="Downloading $desc" local msg="Downloading $desc"
local rc total total_gb progress domain dots agent space folder local rc total total_gb progress log
local domain dots agent space folder
agent=$(getAgent) agent=$(getAgent)
@@ -740,12 +764,27 @@ downloadFile() {
fi fi
info "$msg..." info "$msg..."
log=$(mktemp)
enabled "$DEBUG" && echo "Downloading: $url" enabled "$DEBUG" && echo "Downloading: $url"
{ wget "$url" -O "$iso" --continue -q --timeout=30 --no-http-keep-alive --user-agent "$agent" --show-progress "$progress"; rc=$?; } || : {
LC_ALL=C wget "$url" -O "$iso" --continue --no-verbose --timeout=30 \
--no-http-keep-alive --user-agent "$agent" --show-progress "$progress" \
--output-file="$log"
rc=$?
} || :
fKill "progress.sh" fKill "progress.sh"
if (( rc != 0 )); then
reason=$(sed -n \
-e 's/^wget: //p' \
-e 's/^[0-9-]\{10\} [0-9:]\{8\} ERROR //p' \
"$log" | tail -n 1)
fi
rm -f "$log"
if (( rc == 0 )) && [ -f "$iso" ]; then if (( rc == 0 )) && [ -f "$iso" ]; then
if ! total=$(stat -c%s "$iso"); then if ! total=$(stat -c%s "$iso"); then
@@ -769,11 +808,15 @@ downloadFile() {
fi fi
msg="Failed to download $url" 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! Please report this at $SUPPORT/issues" && return 1
error "$msg , reason: $rc" if (( rc == 3 )); then
error "$msg because the file could not be written (disk full?)."
elif [ -n "$reason" ]; then
error "$msg: ${reason%.}."
else
error "$msg with exit status $rc."
fi
return 1 return 1
} }