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