diff --git a/misc/build.func b/misc/build.func index 47eec0e..0ad448c 100644 --- a/misc/build.func +++ b/misc/build.func @@ -89,6 +89,7 @@ error_handler() { declare -A MSG_INFO_SHOWN SPINNER_ACTIVE=0 SPINNER_PID="" +SPINNER_MSG="" trap 'stop_spinner' EXIT INT TERM HUP @@ -98,9 +99,11 @@ start_spinner() { local spin_i=0 local interval=0.1 + SPINNER_MSG="$msg" + { while [[ "$SPINNER_ACTIVE" -eq 1 ]]; do - printf "\r\e[2K%s %b" "${frames[spin_i]}" "${YW}${msg}${CL}" >&2 + printf "\r\e[2K%s %b" "${frames[spin_i]}" "${YW}${SPINNER_MSG}${CL}" >&2 spin_i=$(((spin_i + 1) % ${#frames[@]})) sleep "$interval" done @@ -135,8 +138,6 @@ msg_info() { [[ -n "${MSG_INFO_SHOWN["$msg"]+x}" ]] && return MSG_INFO_SHOWN["$msg"]=1 - [[ "$SPINNER_ACTIVE" -eq 1 ]] && return - spinner_guard SPINNER_ACTIVE=1 start_spinner "$msg" @@ -145,7 +146,7 @@ msg_info() { msg_ok() { local msg="$1" stop_spinner - printf "\e[?25h\r\e[2K%s %b\n" "${CM}" "${GN}${msg}${CL}" >&2 + printf "\r\e[2K%s %b\n" "${CM}" "${GN}${msg}${CL}" >&2 unset MSG_INFO_SHOWN["$msg"] }