github.com/opencontainers/umoci@v0.4.8-0.20240508124516-656e4836fb0d/hack/resilient-curl.sh (about)

     1  #!/bin/bash
     2  # umoci: Umoci Modifies Open Containers' Images
     3  # Copyright (C) 2016-2020 SUSE LLC
     4  #
     5  # Licensed under the Apache License, Version 2.0 (the "License");
     6  # you may not use this file except in compliance with the License.
     7  # You may obtain a copy of the License at
     8  #
     9  #   http://www.apache.org/licenses/LICENSE-2.0
    10  #
    11  # Unless required by applicable law or agreed to in writing, software
    12  # distributed under the License is distributed on an "AS IS" BASIS,
    13  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    14  # See the License for the specific language governing permissions and
    15  # limitations under the License.
    16  
    17  set -Eeuo pipefail
    18  
    19  ATTEMPT=0
    20  MAX_ATTEMPTS=10
    21  BACKOFF=0.2
    22  
    23  until ( timeout 5s curl "$@" )
    24  do
    25  	[[ "$((++ATTEMPT))" -lt "$MAX_ATTEMPTS" ]] || exit 1
    26  	sleep "$(bc <<<"$BACKOFF * 2*$ATTEMPT")"
    27  done