Utils: Refine codes to parse dependency version

This patch makes the following changes:
1. Create "util_parse_version.sh" for function to parse dependency
   versions.
2. Expand parse_version() to support parsing versions from different
   types of file.

With this patch, CI is able to auto-parse the tf-m-tests version from
the newly defined txt file instead of CMake file.

Signed-off-by: Xinyu Zhang <xinyu.zhang@arm.com>
Change-Id: Ib5b6d38ead6346ff5482f1e6baabf73ea185eff1
diff --git a/clone.sh b/clone.sh
index 53fac28..774e374 100755
--- a/clone.sh
+++ b/clone.sh
@@ -30,6 +30,7 @@
 set -ex
 
 . $(dirname $0)/utils/util_git.sh
+. $(dirname $0)/utils/util_parse_version.sh
 
 function clone_repo_to_share_folder() {
     REPO_URL=$1
@@ -71,21 +72,6 @@
 echo "Share Folder path: ${SHARE_FOLDER}"
 echo
 
-# Parse dependency version specified in TF-M CMake configs
-function parse_version() {
-    CONFIG_FILE_NAME=$1
-    DEPENDENCY_NAME=$2
-    CONFIG_FILE_PATH="${SHARE_FOLDER}/${TFM_NAME}/${CONFIG_FILE_NAME}"
-
-    VERSION="$(grep "set(${DEPENDENCY_NAME}" ${CONFIG_FILE_PATH} | cut -d\" -f2)"
-
-    if [ -z "${VERSION}" ]; then
-        VERSION="refs/heads/main"
-    fi
-
-    echo "${VERSION}"
-}
-
 # TF-M project
 if [ -n "${GERRIT_EVENT_HASH}" ]; then
     # If triggered by Gerrit, use its variables
@@ -104,27 +90,27 @@
 
 # Dependency projects
 TFM_TESTS_PROJECT="${TFM_TESTS_URL:-}"
-TFM_TESTS_REFSPEC="${TFM_TESTS_REFSPEC:-"$(parse_version lib/ext/tf-m-tests/repo_config_default.cmake TFM_TEST_REPO_VERSION)"}"
+TFM_TESTS_REFSPEC="${TFM_TESTS_REFSPEC:-"$(parse_version lib/ext/tf-m-tests/version.txt version= = 2)"}"
 TFM_TESTS_NAME="tf-m-tests"
 
 MBEDTLS_PROJECT="${MBEDTLS_URL:-}"
-MBEDTLS_REFSPEC="${MBEDTLS_VERSION:-"$(parse_version config/config_base.cmake MBEDCRYPTO_VERSION)"}"
+MBEDTLS_REFSPEC="${MBEDTLS_VERSION:-"$(parse_version config/config_base.cmake set\(MBEDCRYPTO_VERSION \" 2)"}"
 MBEDTLS_NAME="mbedtls"
 
 MCUBOOT_PROJECT="${MCUBOOT_URL:-}"
-MCUBOOT_REFSPEC="${MCUBOOT_REFSPEC:-"$(parse_version config/config_base.cmake MCUBOOT_VERSION)"}"
+MCUBOOT_REFSPEC="${MCUBOOT_REFSPEC:-"$(parse_version config/config_base.cmake set\(MCUBOOT_VERSION \" 2)"}"
 MCUBOOT_NAME="mcuboot"
 
 QCBOR_PROJECT="${QCBOR_URL:-}"
-QCBOR_REFSPEC="${QCBOR_VERSION:-"$(parse_version lib/ext/qcbor/CMakeLists.txt QCBOR_VERSION)"}"
+QCBOR_REFSPEC="${QCBOR_VERSION:-"$(parse_version lib/ext/qcbor/CMakeLists.txt set\(QCBOR_VERSION \" 2)"}"
 QCBOR_NAME="qcbor"
 
 TFM_EXTRAS_PROJECT="${TFM_EXTRAS_URL:-}"
-TFM_EXTRAS_REFSPEC="${TFM_EXTRAS_REFSPEC:-"$(parse_version lib/ext/tf-m-extras/CMakeLists.txt TFM_EXTRAS_REPO_VERSION)"}"
+TFM_EXTRAS_REFSPEC="${TFM_EXTRAS_REFSPEC:-"$(parse_version lib/ext/tf-m-extras/CMakeLists.txt set\(TFM_EXTRAS_REPO_VERSION \" 2)"}"
 TFM_EXTRAS_NAME="tf-m-extras"
 
 TFM_TOOLS_PROJECT="${TFM_TOOLS_URL:-}"
-TFM_TOOLS_REFSPEC="${TFM_TOOLS_REFSPEC:-"$(parse_version lib/ext/tf-m-tools/CMakeLists.txt TFM_TOOLS_VERSION)"}"
+TFM_TOOLS_REFSPEC="${TFM_TOOLS_REFSPEC:-"$(parse_version lib/ext/tf-m-tools/CMakeLists.txt set\(TFM_TOOLS_VERSION \" 2)"}"
 TFM_TOOLS_NAME="tf-m-tools"
 
 QA_TOOLS_PROJECT="https://review.trustedfirmware.org/ci/qa-tools"
@@ -152,7 +138,7 @@
 done
 
 PSA_ARCH_TESTS_PROJECT="${PSA_ARCH_TESTS_URL:-}"
-PSA_ARCH_TESTS_REFSPEC="${PSA_ARCH_TESTS_VERSION:-"$(parse_version ../tf-m-tests/tests_psa_arch/fetch_repo/CMakeLists.txt PSA_ARCH_TESTS_VERSION)"}"
+PSA_ARCH_TESTS_REFSPEC="${PSA_ARCH_TESTS_VERSION:-"$(parse_version ../tf-m-tests/tests_psa_arch/fetch_repo/CMakeLists.txt set\(PSA_ARCH_TESTS_VERSION \" 2)"}"
 PSA_ARCH_TESTS_NAME="psa-arch-tests"
 
 clone_repo_to_share_folder "${PSA_ARCH_TESTS_PROJECT}" "${PSA_ARCH_TESTS_NAME}" "${PSA_ARCH_TESTS_REFSPEC}"