From 804418f97fbf9496dfd2951637abdf8aea6c2bc8 Mon Sep 17 00:00:00 2001 From: Bryan Bennett Date: Thu, 14 Apr 2022 08:40:37 -0400 Subject: [PATCH] Fix nix_direnv_version to properly handle major version bumps Closes #159 --- direnvrc | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/direnvrc b/direnvrc index 30ccdb6..7a37a7a 100644 --- a/direnvrc +++ b/direnvrc @@ -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