@@ -69,6 +69,16 @@ is_luca_installed() {
6969 command -v luca > /dev/null 2>&1
7070}
7171
72+ # Check if installed luca version matches .luca-version file
73+ is_luca_version_correct () {
74+ if [ ! -f " $VERSION_FILE " ]; then
75+ return 0 # no version file, nothing to check
76+ fi
77+ REQUIRED_VERSION=$( cat " $VERSION_FILE " )
78+ INSTALLED_VERSION=$( luca --version 2> /dev/null)
79+ [ " $INSTALLED_VERSION " = " $REQUIRED_VERSION " ]
80+ }
81+
7282# =============================================================================
7383# MAIN HOOK LOGIC
7484# =============================================================================
@@ -95,6 +105,7 @@ if [ -z "$REPO_ROOT" ]; then
95105 exit 0
96106fi
97107
108+ VERSION_FILE=" $REPO_ROOT /.luca-version"
98109LUCAFILE_PATH=" $REPO_ROOT /$LUCAFILE "
99110
100111# Only proceed if Lucafile exists
@@ -109,19 +120,25 @@ log_info "Found $LUCAFILE, synchronizing tools..."
109120# LUCA INSTALLATION CHECK
110121# =============================================================================
111122
112- # Check if Luca is installed, install if not
113- if ! is_luca_installed; then
114- log_info " Luca not found, installing..."
115-
123+ # Check if Luca is installed and version is correct, install/update if not
124+ if ! is_luca_installed || ! is_luca_version_correct; then
125+ if ! is_luca_installed; then
126+ log_info " Luca not found, installing..."
127+ else
128+ REQUIRED=$( cat " $VERSION_FILE " )
129+ INSTALLED=$( luca --version 2> /dev/null)
130+ log_info " Luca version mismatch (installed: $INSTALLED , required: $REQUIRED ), updating..."
131+ fi
132+
116133 if command -v curl > /dev/null 2>&1 ; then
117134 /bin/bash -c " $( curl -fsSL $INSTALL_SCRIPT_URL ) "
118135 INSTALL_RESULT=$?
119-
136+
120137 if [ $INSTALL_RESULT -ne 0 ]; then
121138 log_error " Failed to install Luca"
122139 exit 1
123140 fi
124-
141+
125142 log_success " Luca installed"
126143 else
127144 log_error " curl is required to install Luca"
0 commit comments