aboutsummaryrefslogtreecommitdiff
path: root/scripts/ci/retry.sh
diff options
context:
space:
mode:
authorDaniel Gröber <dxld@darkboxed.org>2017-11-26 19:34:23 +0100
committerDaniel Gröber <dxld@darkboxed.org>2017-11-26 19:34:23 +0100
commit16f42e85a064d690f05459306f6b1ea0f70c9ab3 (patch)
treeee2c45c6ad8f7dafba87408d9407c9a35bc46b23 /scripts/ci/retry.sh
parentcdef82d6d86ccdf355e4ce5cfd4f3b5382dbe6dd (diff)
ci: Add retry loop to 'cabal update'
Diffstat (limited to 'scripts/ci/retry.sh')
-rwxr-xr-xscripts/ci/retry.sh50
1 files changed, 50 insertions, 0 deletions
diff --git a/scripts/ci/retry.sh b/scripts/ci/retry.sh
new file mode 100755
index 0000000..285648e
--- /dev/null
+++ b/scripts/ci/retry.sh
@@ -0,0 +1,50 @@
+#!/usr/bin/env bash
+
+# MIT LICENSE
+#
+# Copyright (c) 2016 Travis CI GmbH <contact@travis-ci.org>
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+#
+# Copied from github.com/travis-ci/travis-build and modified to pass shellcheck.
+# Copied from https://github.com/cockroachdb/cockroach/blob/b4b7412d1c899a7488a9839eb4e01a616e4de135/scripts/travis_retry.sh and modified slightly
+
+retry() {
+ local result=0
+ local count=1
+ while [ $count -le 3 ]; do
+ [ $result -ne 0 ] && {
+ echo -e "\n${ANSI_RED}The command \"$*\" failed. Retrying, $count of 3.${ANSI_RESET}\n" >&2
+ }
+ "$@"
+ result=$?
+ [ $result -eq 0 ] && break
+ count=$((count + 1))
+ sleep 10
+ done
+
+ [ $count -gt 3 ] && {
+ echo -e "\n${ANSI_RED}The command \"$*\" failed 3 times.${ANSI_RESET}\n" >&2
+ }
+
+ return $result
+}
+
+retry "$@"