diff --git a/hledger-install/hledger-install.sh b/hledger-install/hledger-install.sh index f4a025612..c941fb9e2 100755 --- a/hledger-install/hledger-install.sh +++ b/hledger-install/hledger-install.sh @@ -768,6 +768,42 @@ trap cleanup_temp_dir EXIT # hledger routines +# Compare dotted number version strings, based on https://stackoverflow.com/a/4025065/84401. +# cmpver A B's exit status *and* output is +# 0 for A ~= B (1 is equivalent to 1.0, 1.0.0 etc.) +# 1 for A > B +# 2 for A < B. +cmpver () { + if [[ $1 == $2 ]] + then + echo 0; return 0 + fi + local IFS=. + local i ver1=($1) ver2=($2) + # fill empty fields in ver1 with zeros + for ((i=${#ver1[@]}; i<${#ver2[@]}; i++)) + do + ver1[i]=0 + done + for ((i=0; i<${#ver1[@]}; i++)) + do + if [[ -z ${ver2[i]} ]] + then + # fill empty fields in ver2 with zeros + ver2[i]=0 + fi + if ((10#${ver1[i]} > 10#${ver2[i]})) + then + echo 1; return 1 + fi + if ((10#${ver1[i]} < 10#${ver2[i]})) + then + echo 2; return 2 + fi + done + echo 0; return 0 +} + # install stack or a newer version of stack if needed, # or always with --force-install-stack, # in $HOME/.local/bin @@ -940,42 +976,6 @@ fi try_info cabal update ) -# Compare dotted number version strings, based on https://stackoverflow.com/a/4025065/84401. -# cmpver A B's exit status *and* output is -# 0 for A ~= B (1 is equivalent to 1.0, 1.0.0 etc.) -# 1 for A > B -# 2 for A < B. -cmpver () { - if [[ $1 == $2 ]] - then - echo 0; return 0 - fi - local IFS=. - local i ver1=($1) ver2=($2) - # fill empty fields in ver1 with zeros - for ((i=${#ver1[@]}; i<${#ver2[@]}; i++)) - do - ver1[i]=0 - done - for ((i=0; i<${#ver1[@]}; i++)) - do - if [[ -z ${ver2[i]} ]] - then - # fill empty fields in ver2 with zeros - ver2[i]=0 - fi - if ((10#${ver1[i]} > 10#${ver2[i]})) - then - echo 1; return 1 - fi - if ((10#${ver1[i]} < 10#${ver2[i]})) - then - echo 2; return 2 - fi - done - echo 0; return 0 -} - # try installing each package that needs installing, in turn echo ----------