From 8a067c43b7f5fe553fc6b9c1ccf9a2a98e7f1b05 Mon Sep 17 00:00:00 2001
From: Pasukhin Dmitry <dpasukhi@opencascade.com>
Date: Sat, 1 Feb 2025 00:04:27 +0100
Subject: [PATCH] Configuration - Version detection on MacOS #313

Improve version extraction and add error handling for missing version file
---
 adm/scripts/build_common.sh | 32 +++++++++++++++++++++++++++-----
 1 file changed, 27 insertions(+), 5 deletions(-)

diff --git a/adm/scripts/build_common.sh b/adm/scripts/build_common.sh
index ade4428660..5c820f7e4a 100644
--- a/adm/scripts/build_common.sh
+++ b/adm/scripts/build_common.sh
@@ -1,8 +1,30 @@
 #!/bin/bash
 
+# Ensure script dir is defined
+if [ -z "$aScriptDir" ]; then
+    aScriptDir=$(dirname "$0")
+fi
+
+# Check if version file exists
+versionFile="$aScriptDir/../cmake/version.cmake"
+if [ ! -f "$versionFile" ]; then
+    echo "Error: version.cmake not found"
+    exit 1
+fi
+
 # Extract version info from version.cmake
-anOcctVerSuffix=`grep -e "OCC_VERSION_DEVELOPMENT" "$aScriptDir/../cmake/version.cmake" | grep -o '".*"' | tr -d '"'`
-OCC_VERSION_MAJOR=`grep -e "OCC_VERSION_MAJOR" "$aScriptDir/../cmake/version.cmake" | awk '{print $3}'`
-OCC_VERSION_MINOR=`grep -e "OCC_VERSION_MINOR" "$aScriptDir/../cmake/version.cmake" | awk '{print $3}'`
-OCC_VERSION_MAINTENANCE=`grep -e "OCC_VERSION_MAINTENANCE" "$aScriptDir/../cmake/version.cmake" | awk '{print $3}'`
-anOcctVersion="$OCC_VERSION_MAJOR.$OCC_VERSION_MINOR.$OCC_VERSION_MAINTENANCE"
+OCC_VERSION_MAJOR=$(awk '/set.*OCC_VERSION_MAJOR/ {print $3}' "$versionFile")
+OCC_VERSION_MINOR=$(awk '/set.*OCC_VERSION_MINOR/ {print $3}' "$versionFile")
+OCC_VERSION_MAINTENANCE=$(awk '/set.*OCC_VERSION_MAINTENANCE/ {print $3}' "$versionFile")
+anOcctVerSuffix=$(awk '/set.*OCC_VERSION_DEVELOPMENT/ {
+    if (NF > 2) {
+        gsub(/[)" ]/, "", $3)
+        print $3
+    } else {
+        print ""
+    }
+}' "$versionFile")
+
+# Combine version string
+anOcctVersion="${OCC_VERSION_MAJOR}.${OCC_VERSION_MINOR}.${OCC_VERSION_MAINTENANCE}"
+