aboutsummaryrefslogtreecommitdiffstats
path: root/tools/bin/gitCloneOneOf.sh
diff options
context:
space:
mode:
Diffstat (limited to 'tools/bin/gitCloneOneOf.sh')
-rwxr-xr-xtools/bin/gitCloneOneOf.sh38
1 files changed, 38 insertions, 0 deletions
diff --git a/tools/bin/gitCloneOneOf.sh b/tools/bin/gitCloneOneOf.sh
new file mode 100755
index 00000000..fecdf990
--- /dev/null
+++ b/tools/bin/gitCloneOneOf.sh
@@ -0,0 +1,38 @@
+#!/bin/bash
+
+if [ $# -lt 3 ]; then
+ echo "ERROR incorrect number of parameters"
+ echo "Usage:"
+ echo " $0 <repo_name> <repo_directory> <remote1> [<remote2>...]"
+ echo
+ echo "$0 clones repository <repo_name> to the directory <repo_directory>"
+ echo "It clones off of <remote1>. If git can't clone off of <remote1> it tries"
+ echo "to clone off of <remote2>, then <remote3> etc."
+ exit 1
+fi
+
+REPO_NAME=$1
+REPO_DIR=$2
+
+REMOTES=${@:3}
+
+if [ -d $REPO_DIR ]; then
+ echo "Directory $REPO_DIR exists, no need to clone"
+ exit 0
+fi
+
+echo "###################################################################"
+echo "# Cloning $REPO_NAME"
+
+for remote in $REMOTES; do
+ echo "# Trying $remote"
+ git clone $remote $REPO_DIR >/dev/null 2>&1
+ ERROR=$?
+ if [ $ERROR -eq 0 ]; then
+ echo "# SUCCESS"
+ exit 0
+ fi
+ echo "# Skipped "
+done
+echo "# FAILED cloning "
+exit 1