1*fe5cfb17STomasz Sapeta#!/usr/bin/env bash
2*fe5cfb17STomasz Sapeta
3*fe5cfb17STomasz Sapetafunction retry3 {
4*fe5cfb17STomasz Sapeta  local n=1
5*fe5cfb17STomasz Sapeta  local max=3
6*fe5cfb17STomasz Sapeta  local delay=1
7*fe5cfb17STomasz Sapeta  while true; do
8*fe5cfb17STomasz Sapeta    # shellcheck disable=SC2015
9*fe5cfb17STomasz Sapeta    "$@" && break || {
10*fe5cfb17STomasz Sapeta      if [[ $n -lt $max ]]; then
11*fe5cfb17STomasz Sapeta        ((n++))
12*fe5cfb17STomasz Sapeta        echo "Command failed. Attempt $n/$max:"
13*fe5cfb17STomasz Sapeta        sleep $delay;
14*fe5cfb17STomasz Sapeta      else
15*fe5cfb17STomasz Sapeta        echo "The command has failed after $n attempts." >&2
16*fe5cfb17STomasz Sapeta        return 1
17*fe5cfb17STomasz Sapeta      fi
18*fe5cfb17STomasz Sapeta    }
19*fe5cfb17STomasz Sapeta  done
20*fe5cfb17STomasz Sapeta}
21*fe5cfb17STomasz Sapeta
22*fe5cfb17STomasz Sapetaif [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
23*fe5cfb17STomasz Sapeta  retry3 "$@"
24*fe5cfb17STomasz Sapetafi
25