@@ -204,14 +204,51 @@ else
204204 print_result code " eval \"\$ (forge zsh theme)\" "
205205fi
206206
207+ # Helper function to compare versions
208+ # Returns 0 if version1 >= version2, 1 otherwise
209+ function version_gte() {
210+ local version1=$1
211+ local version2=$2
212+
213+ # Remove 'v' prefix if present
214+ version1=${version1# v}
215+ version2=${version2# v}
216+
217+ # Split versions into arrays
218+ local -a ver1_parts=(${(s: .: )version1} )
219+ local -a ver2_parts=(${(s: .: )version2} )
220+
221+ # Compare each part
222+ for i in {1..3}; do
223+ local v1=${ver1_parts[$i]:- 0}
224+ local v2=${ver2_parts[$i]:- 0}
225+
226+ # Remove any non-numeric suffix (e.g., "0-rc1" -> "0")
227+ v1=${v1%% [^0-9]* }
228+ v2=${v2%% [^0-9]* }
229+
230+ if [[ $v1 -gt $v2 ]]; then
231+ return 0
232+ elif [[ $v1 -lt $v2 ]]; then
233+ return 1
234+ fi
235+ done
236+
237+ return 0 # versions are equal
238+ }
239+
207240# 5. Check dependencies
208241print_section " Dependencies"
209242
210243# Check for fzf - required for interactive selection
211244if command -v fzf & > /dev/null; then
212245 local fzf_version=$( fzf --version 2>&1 | head -n1 | awk ' {print $1}' )
213246 if [[ -n " $fzf_version " ]]; then
214- print_result pass " fzf: ${fzf_version} "
247+ if version_gte " $fzf_version " " 0.36.0" ; then
248+ print_result pass " fzf: ${fzf_version} "
249+ else
250+ print_result fail " fzf: ${fzf_version} " " Version 0.36.0 or higher required. Update: https://github.com/junegunn/fzf#installation"
251+ fi
215252 else
216253 print_result pass " fzf: installed"
217254 fi
223260if command -v fd & > /dev/null; then
224261 local fd_version=$( fd --version 2>&1 | awk ' {print $2}' )
225262 if [[ -n " $fd_version " ]]; then
226- print_result pass " fd: ${fd_version} "
263+ if version_gte " $fd_version " " 10.0.0" ; then
264+ print_result pass " fd: ${fd_version} "
265+ else
266+ print_result fail " fd: ${fd_version} " " Version 10.0.0 or higher required. Update: https://github.com/sharkdp/fd#installation"
267+ fi
227268 else
228269 print_result pass " fd: installed"
229270 fi
230271elif command -v fdfind & > /dev/null; then
231272 local fd_version=$( fdfind --version 2>&1 | awk ' {print $2}' )
232273 if [[ -n " $fd_version " ]]; then
233- print_result pass " fdfind: ${fd_version} "
274+ if version_gte " $fd_version " " 10.0.0" ; then
275+ print_result pass " fdfind: ${fd_version} "
276+ else
277+ print_result fail " fdfind: ${fd_version} " " Version 10.0.0 or higher required. Update: https://github.com/sharkdp/fd#installation"
278+ fi
234279 else
235280 print_result pass " fdfind: installed"
236281 fi
242287if command -v bat & > /dev/null; then
243288 local bat_version=$( bat --version 2>&1 | awk ' {print $2}' )
244289 if [[ -n " $bat_version " ]]; then
245- print_result pass " bat: ${bat_version} "
290+ if version_gte " $bat_version " " 0.20.0" ; then
291+ print_result pass " bat: ${bat_version} "
292+ else
293+ print_result fail " bat: ${bat_version} " " Version 0.20.0 or higher required. Update: https://github.com/sharkdp/bat#installation"
294+ fi
246295 else
247296 print_result pass " bat: installed"
248297 fi
0 commit comments