-function wait_for {
- # Execute in a subshell to prevent local variable override during recursion
- (
- local total_attempts=$1; shift
- local cmdstr=$*
- local sleep_time=2
- echo -e "\n[wait_for] Waiting for cmd to return success: ${cmdstr}"
- # shellcheck disable=SC2034
- for attempt in $(seq "${total_attempts}"); do
- echo "[wait_for] Attempt ${attempt}/${total_attempts%.*} for: ${cmdstr}"
- # shellcheck disable=SC2015
- eval "${cmdstr}" && echo "[wait_for] OK: ${cmdstr}" && return 0 || true
- sleep "${sleep_time}"
- done
- echo "[wait_for] ERROR: Failed after max attempts: ${cmdstr}"
- return 1
- )
-}