From aff6057cde32d3f299ffb769380a3ea43e398a6d Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Wed, 7 May 2025 15:44:12 +0200 Subject: [PATCH 1/2] community_curl --- install/babybuddy-install.sh | 2 +- misc/core.func | 53 ++++++++++++++++++++---------------- 2 files changed, 30 insertions(+), 25 deletions(-) diff --git a/install/babybuddy-install.sh b/install/babybuddy-install.sh index 04d4547..6b309b4 100644 --- a/install/babybuddy-install.sh +++ b/install/babybuddy-install.sh @@ -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 diff --git a/misc/core.func b/misc/core.func index 589226e..9d0f27d 100644 --- a/misc/core.func +++ b/misc/core.func @@ -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 From 6b1d53726953c771b82c39f7566a30327b79f974 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Wed, 7 May 2025 15:45:26 +0200 Subject: [PATCH 2/2] fixed --- misc/build.func | 1 - misc/core.func | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/misc/build.func b/misc/build.func index 43d5628..d6bf61a 100644 --- a/misc/build.func +++ b/misc/build.func @@ -279,7 +279,6 @@ echo_default() { # This function is called when the user decides to exit the script. It clears the screen and displays an exit message. exit_script() { - [[ -n "${SPINNER_PID:-}" ]] && kill "$SPINNER_PID" &>/dev/null || true clear echo -e "\n${CROSS}${RD}User exited script${CL}\n" exit diff --git a/misc/core.func b/misc/core.func index 9d0f27d..bae272e 100644 --- a/misc/core.func +++ b/misc/core.func @@ -132,7 +132,7 @@ __curl_err_handler() { *) msg_error "Unhandled curl error (exit $exit_code) in: $cmd" ;; esac - exit_script + exit } # This function displays an informational message with logging support.