clone.sh: Extract function clone_repo_to_share_folder()
This patch extracts function clone_repo_to_share_folder() in clone.sh to
keep the code easy to maintain.
Signed-off-by: Xinyu Zhang <xinyu.zhang@arm.com>
Change-Id: I1473918bc424af8f6980e76d89666bd40fb4220a
diff --git a/clone.sh b/clone.sh
index 607a627..5d630a7 100755
--- a/clone.sh
+++ b/clone.sh
@@ -31,6 +31,33 @@
. $(dirname $0)/utils/util_git.sh
+function clone_repo_to_share_folder() {
+ REPO_URL=$1
+ REPO_NAME=$2
+ REPO_REFSPEC=$3
+
+ echo "Repo: $REPO_URL $REPO_NAME $REPO_REFSPEC"
+
+ # In case repository is not defined, just skip it
+ if [ -z "${REPO_URL}" ]; then
+ echo "Repo ${REPO_NAME} not needed in this job. Skip download."
+ return 0
+ fi
+
+ if [ ! -d "${SHARE_FOLDER}/${REPO_NAME}" ]; then
+ git_clone $REPO_URL "${SHARE_FOLDER}/${REPO_NAME}"
+ git_checkout "${SHARE_FOLDER}/${REPO_NAME}" $REPO_REFSPEC
+ else
+ cd "${SHARE_FOLDER}/${REPO_NAME}"
+ echo -e "Share Folder ${REPO_NAME} $(git rev-parse --short HEAD)\n"
+ cd $OLDPWD
+ fi
+
+ # Copy repos into pwd dir (workspace in CI), so each job would work
+ # on its own workspace
+ cp -a -f "${SHARE_FOLDER}/${REPO_NAME}" "${WORKSPACE}/${REPO_NAME}"
+}
+
# Take into consideration non-CI runs where SHARE_FOLDER variable
# may not be present
if [ -z "${SHARE_FOLDER}" ]; then
@@ -59,7 +86,7 @@
echo "${VERSION}"
}
-# Must projects
+# TF-M project
if [ -n "${GERRIT_EVENT_HASH}" ]; then
# If triggered by Gerrit, use its variables
TFM_PROJECT="https://${GERRIT_HOST}/${GERRIT_PROJECT}"
@@ -69,31 +96,11 @@
TFM_REFSPEC="${GERRIT_REFSPEC:?}"
TFM_NAME="trusted-firmware-m"
-# Array containing "<repo url>;"<repo name>;<refspec>" elements
-must_repos=(
- "${TFM_PROJECT};${TFM_NAME};${TFM_REFSPEC}"
-)
-
-for repo in ${must_repos[@]}; do
- # Parse the repo elements
- REPO_URL="$(echo "${repo}" | awk -F ';' '{print $1}')"
- REPO_NAME="$(echo "${repo}" | awk -F ';' '{print $2}')"
- REPO_REFSPEC="$(echo "${repo}" | awk -F ';' '{print $3}')"
- echo "Repo: $REPO_URL $REPO_NAME $REPO_REFSPEC"
-
- if [ ! -d "${SHARE_FOLDER}/${REPO_NAME}" ]; then
- git_clone $REPO_URL "${SHARE_FOLDER}/${REPO_NAME}"
- git_checkout "${SHARE_FOLDER}/${REPO_NAME}" $REPO_REFSPEC
- else
- cd "${SHARE_FOLDER}/${REPO_NAME}"
- echo -e "Share Folder ${REPO_NAME} $(git rev-parse --short HEAD)\n"
- cd $OLDPWD
- fi
-
- # Copy repos into pwd dir (workspace in CI), so each job would work
- # on its own workspace
- cp -a -f "${SHARE_FOLDER}/${REPO_NAME}" "${WORKSPACE}/${REPO_NAME}"
-done
+clone_repo_to_share_folder "${TFM_PROJECT}" "${TFM_NAME}" "${TFM_REFSPEC}"
+if [ ! -d "${SHARE_FOLDER}/${TFM_NAME}" ]; then
+ echo "Fatal error: ${TFM_NAME} not downloaded!"
+ exit 1
+fi
# Dependency projects
TFM_TESTS_PROJECT="${TFM_TESTS_URL:-}"
@@ -145,23 +152,6 @@
REPO_URL="$(echo "${repo}" | awk -F ';' '{print $1}')"
REPO_NAME="$(echo "${repo}" | awk -F ';' '{print $2}')"
REPO_REFSPEC="$(echo "${repo}" | awk -F ';' '{print $3}')"
- echo "Repo: $REPO_URL $REPO_NAME $REPO_REFSPEC"
- # In case repository is not defined, just skip it
- if [ -z "${REPO_URL}" ]; then
- continue
- fi
-
- if [ ! -d "${SHARE_FOLDER}/${REPO_NAME}" ]; then
- git_clone $REPO_URL "${SHARE_FOLDER}/${REPO_NAME}"
- git_checkout "${SHARE_FOLDER}/${REPO_NAME}" $REPO_REFSPEC
- else
- cd "${SHARE_FOLDER}/${REPO_NAME}"
- echo -e "Share Folder ${REPO_NAME} $(git rev-parse --short HEAD)\n"
- cd $OLDPWD
- fi
-
- # Copy repos into pwd dir (workspace in CI), so each job would work
- # on its own workspace
- cp -a -f "${SHARE_FOLDER}/${REPO_NAME}" "${WORKSPACE}/${REPO_NAME}"
+ clone_repo_to_share_folder "${REPO_URL}" "${REPO_NAME}" "${REPO_REFSPEC}"
done