@@ -10,7 +10,7 @@ NC='\033[0m' # No Color
1010
1111node_version_needed=" v24"
1212rust_version_needed=" 1.88.0"
13- golangci_lint_version_needed=" 2.3 .0"
13+ golangci_lint_version_needed=" 2.4 .0"
1414
1515if [[ -f go.mod ]]; then
1616 go_version_needed=$( grep " ^go " go.mod | awk ' {print $2}' )
@@ -30,6 +30,35 @@ command_exists() {
3030 command -v " $1 " > /dev/null 2>&1
3131}
3232
33+ # compare_versions <needed> <installed> [min|exact]
34+ # - needed may be major.minor OR major.minor.patch
35+ # - mode=min : installed >= needed
36+ # - mode=exact: installed == needed
37+ compare_versions () {
38+ local n=" $1 " i=" $2 " mode=" ${3:- min} "
39+
40+ # If installed has no patch, append .0
41+ [[ " $i " =~ ^[0-9]+\. [0-9]+$ ]] && i=" ${i} .0"
42+
43+ IFS=' .' read -r iM iN iP <<< " $i"
44+
45+ if [[ " $n " == * .* .* ]]; then
46+ IFS=' .' read -r nM nN nP <<< " $n"
47+ if [[ " $mode " == " exact" ]]; then
48+ (( iM== nM && iN== nN && iP== nP ))
49+ else
50+ (( iM> nM )) || { (( iM== nM && iN> nN )) ; } || { (( iM== nM && iN== nN && iP>= nP )) ; }
51+ fi
52+ else
53+ IFS=' .' read -r nM nN <<< " $n"
54+ if [[ " $mode " == " exact" ]]; then
55+ (( iM== nM && iN== nN ))
56+ else
57+ (( iM> nM )) || { (( iM== nM && iN>= nN )) ; }
58+ fi
59+ fi
60+ }
61+
3362EXIT_CODE=0
3463
3564# Detect operating system
@@ -93,7 +122,7 @@ for pkg in "${prerequisites[@]}"; do
93122 [[ " $pkg " == " wasm2wat" ]] && display_name=" wabt"
94123 [[ " $pkg " == " clang" ]] && display_name=" llvm"
95124 [[ " $pkg " == " wasm-ld" ]] && display_name=" lld"
96-
125+
97126 if command_exists " $pkg " ; then
98127 exists=true
99128 else
139168# Check Go version
140169if command_exists go; then
141170 GO_INSTALLED_VERSION=$( go version | awk ' {print $3}' | sed ' s/go//' )
142- if [[ " $GO_INSTALLED_VERSION " == " $go_version_needed " ]] ; then
171+ if compare_versions " $go_version_needed " " $GO_INSTALLED_VERSION " " min " ; then
143172 echo -e " ${GREEN} Go version $go_version_needed is installed.${NC} "
144173 else
145174 echo -e " ${RED} Go version $go_version_needed not installed.${NC} "
0 commit comments