community_curl
This commit is contained in:
parent
6944e9db9e
commit
aff6057cde
@ -27,7 +27,7 @@ msg_ok "Installed Dependencies"
|
||||
|
||||
msg_info "Installing Babybuddy"
|
||||
cd /opt
|
||||
RELEASE=$(curl -fsSL https://api.github.com/repos/babybuddys/babybuddy/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||
RELEASE=$(community_curl https://api.github.com/repos/babybuddys/babybuddy/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||
wget -q "https://github.com/babybuddy/babybuddy/archive/refs/tags/v${RELEASE}.zip"
|
||||
unzip -q v${RELEASE}.zip
|
||||
mv babybuddy-${RELEASE} /opt/babybuddy
|
||||
|
@ -71,6 +71,35 @@ default_vars() {
|
||||
i=$RETRY_NUM
|
||||
}
|
||||
|
||||
community_curl() {
|
||||
local url="$1"
|
||||
shift
|
||||
local max_retries=3
|
||||
local delay=2
|
||||
local attempt=1
|
||||
local result exit_code
|
||||
|
||||
msg_info "Fetching: $url"
|
||||
|
||||
while :; do
|
||||
result=$(curl -fsSL --retry 0 "$url" "$@" 2>/dev/null)
|
||||
exit_code=$?
|
||||
if [[ $exit_code -eq 0 ]]; then
|
||||
printf '%s' "$result"
|
||||
return 0
|
||||
fi
|
||||
|
||||
if ((attempt >= max_retries)); then
|
||||
__curl_err_handler "$exit_code"
|
||||
return 1
|
||||
fi
|
||||
|
||||
msg_info "Curl failed (attempt $attempt of $max_retries). Retrying in ${delay}s..."
|
||||
sleep "$delay"
|
||||
((attempt++))
|
||||
done
|
||||
}
|
||||
|
||||
__curl_err_handler() {
|
||||
local exit_code="$1"
|
||||
local cmd="${BASH_COMMAND:-unknown}"
|
||||
@ -172,27 +201,3 @@ msg_error() {
|
||||
local msg="$1"
|
||||
printf "\r\e[2K%s %b\n" "${CROSS}" "${RD}${msg}${CL}" >&2
|
||||
}
|
||||
|
||||
if [[ -n "$BASH_VERSION" ]] && [[ "$OSTYPE" != "alpine"* ]]; then
|
||||
__last_command=""
|
||||
__last_result=0
|
||||
|
||||
# Enable extended tracing
|
||||
set -o errtrace
|
||||
set -o functrace
|
||||
|
||||
# Track the last command and its exit code
|
||||
trap '__last_result=$?; __last_command=$BASH_COMMAND' DEBUG
|
||||
|
||||
# Global error handler
|
||||
trap '__global_err_handler "$__last_result" "$__last_command"' ERR
|
||||
|
||||
__global_err_handler() {
|
||||
local exit_code="$1"
|
||||
local cmd="$2"
|
||||
[[ $cmd == curl* ]] && __curl_err_handler "$exit_code"
|
||||
}
|
||||
else
|
||||
# Alpine oder nicht-Bash: Hinweis bei Curl-Fehlern nicht verfügbar
|
||||
export BASH_FALLBACK_CURL_HANDLER=1
|
||||
fi
|
||||
|
Loading…
x
Reference in New Issue
Block a user