Fix nix_direnv_version to properly handle major version bumps

Closes #159
This commit is contained in:
Bryan Bennett 2022-04-14 08:40:37 -04:00
parent c44fd24a25
commit 804418f97f
No known key found for this signature in database
GPG key ID: EF90E3E98B8F5C0B

View file

@ -44,6 +44,10 @@ nix_direnv_version() {
[[ $1 =~ ^([^+-.]*)(\.?)([^+-.]*)(\.?)([^+-]*)(-?)([^+]*)(\+?)(.*)$ ]] [[ $1 =~ ^([^+-.]*)(\.?)([^+-.]*)(\.?)([^+-]*)(-?)([^+]*)(\+?)(.*)$ ]]
declare -a ver; ver=("${BASH_REMATCH[@]:1}") declare -a ver; ver=("${BASH_REMATCH[@]:1}")
req_major=${ver[0]}
req_minor=${ver[2]:=0}
req_patch=${ver[4]:=0}
if [[ ( ${ver[0]} != +([0-9]) ) \ if [[ ( ${ver[0]} != +([0-9]) ) \
|| ( ${ver[1]} == '.' && ${ver[2]} != +([0-9]) ) \ || ( ${ver[1]} == '.' && ${ver[2]} != +([0-9]) ) \
|| ( ${ver[3]} == '.' && ${ver[4]} != +([0-9]) ) \ || ( ${ver[3]} == '.' && ${ver[4]} != +([0-9]) ) \
@ -55,9 +59,9 @@ nix_direnv_version() {
return 1 return 1
fi fi
if [[ ( ${ver[0]} -gt $major ) \ if [[ ($req_major -gt $major) \
|| ( ${ver[2]:=0} -gt $minor ) \ || ($req_major -eq $major && $req_minor -gt $minor) \
|| ( ${ver[4]:=0} -gt $patch ) \ || ($req_major -eq $major && $req_minor -eq $minor && $req_patch -gt $patch)
]]; then ]]; then
printf '%s\n' "nix-direnv: error current version v$major.$minor.$patch is older than the desired version v$1" >&2 printf '%s\n' "nix-direnv: error current version v$major.$minor.$patch is older than the desired version v$1" >&2
return 1 return 1