From e2865f9e6abd60585052cb0c73f95fca171c86f1 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Fri, 4 Jul 2025 09:20:33 +0200 Subject: [PATCH] Update core.func --- misc/core.func | 106 ++++++++++--------------------------------------- 1 file changed, 20 insertions(+), 86 deletions(-) diff --git a/misc/core.func b/misc/core.func index 62e33797..1632b1bd 100644 --- a/misc/core.func +++ b/misc/core.func @@ -250,79 +250,6 @@ header_info() { fi } -# ------------------------------------------------------------------------------ -# Performs a curl request with retry logic and inline feedback. -# ------------------------------------------------------------------------------ - -run_curl() { - if [ "$VERBOSE" = "no" ]; then - $STD curl "$@" - else - curl "$@" - fi -} - -curl_handler() { - set +e - trap 'set -e' RETURN - local args=() - local url="" - local max_retries=3 - local delay=2 - local attempt=1 - local exit_code - local has_output_file=false - local result="" - - # Parse arguments - for arg in "$@"; do - if [[ "$arg" != -* && -z "$url" ]]; then - url="$arg" - fi - [[ "$arg" == "-o" || "$arg" == --output ]] && has_output_file=true - args+=("$arg") - done - - if [[ -z "$url" ]]; then - msg_error "No valid URL or option entered for curl_handler" - return 1 - fi - - $STD msg_info "Fetching: $url" - - while [[ $attempt -le $max_retries ]]; do - if $has_output_file; then - $STD run_curl "${args[@]}" - exit_code=$? - else - result=$(run_curl "${args[@]}") - exit_code=$? - fi - - if [[ $exit_code -eq 0 ]]; then - $STD msg_ok "Fetched: $url" - $has_output_file || printf '%s' "$result" - return 0 - fi - - if ((attempt >= max_retries)); then - # Read error log if it exists - if [ -s /tmp/curl_error.log ]; then - local curl_stderr - curl_stderr=$(&2 - sleep "$delay" - ((attempt++)) - done - set -e -} - # ------------------------------------------------------------------------------ # Handles specific curl error codes and displays descriptive messages. # ------------------------------------------------------------------------------ @@ -386,32 +313,39 @@ stop_spinner() { wait "$pid" 2>/dev/null || true fi rm -f /tmp/.spinner.pid - unset SPINNER_PID fi - stty sane 2>/dev/null - #printf "\r\033[K\e[?25h\n" + unset SPINNER_PID SPINNER_MSG + stty sane 2>/dev/null || true } msg_info() { local msg="$1" - [[ -z "$msg" || -n "${MSG_INFO_SHOWN["$msg"]+x}" ]] && return + [[ -z "$msg" ]] && return + + if ! declare -p MSG_INFO_SHOWN &>/dev/null || ! declare -A MSG_INFO_SHOWN &>/dev/null; then + declare -gA MSG_INFO_SHOWN=() + fi + + if [[ -n "${MSG_INFO_SHOWN["$msg"]+x}" ]]; then + return + fi MSG_INFO_SHOWN["$msg"]=1 stop_spinner - local HOURGLASS="${TAB}⏳${TAB}" - if [[ "${VERBOSE:-no}" != "no" || "${var_os:-}" == "alpine" || ! -t 2 ]]; then + local HOURGLASS="${TAB}⏳${TAB}" printf "\r\e[2K%s %b\n" "$HOURGLASS" "${YW}${msg}${CL}" >&2 - else - SPINNER_MSG="$msg" - color_spinner - spinner & - SPINNER_PID=$! - echo "$SPINNER_PID" >/tmp/.spinner.pid - disown "$SPINNER_PID" 2>/dev/null || true + return fi + + SPINNER_MSG="$msg" + color_spinner + spinner & + SPINNER_PID=$! + echo "$SPINNER_PID" >/tmp/.spinner.pid + disown "$SPINNER_PID" 2>/dev/null || true } msg_ok() {