diff options
author | Alyssa Ross <hi@alyssa.is> | 2020-01-26 22:39:25 +0000 |
---|---|---|
committer | Alyssa Ross <hi@alyssa.is> | 2020-01-26 22:39:25 +0000 |
commit | bd2ad77e38991af0d7a3a5d82bd3f41a077ce401 (patch) | |
tree | d1e26d039eb5004eb7c836aafff259cc198626d4 /pkgs/development/tools/poetry2nix/poetry2nix/semver.nix | |
parent | e5d8381542a8d084371d26013fab199f52474be7 (diff) | |
parent | ad3f0d9829119b611350a9be1c226fb625f1f310 (diff) | |
download | nixpkgs-bd2ad77e38991af0d7a3a5d82bd3f41a077ce401.tar nixpkgs-bd2ad77e38991af0d7a3a5d82bd3f41a077ce401.tar.gz nixpkgs-bd2ad77e38991af0d7a3a5d82bd3f41a077ce401.tar.bz2 nixpkgs-bd2ad77e38991af0d7a3a5d82bd3f41a077ce401.tar.lz nixpkgs-bd2ad77e38991af0d7a3a5d82bd3f41a077ce401.tar.xz nixpkgs-bd2ad77e38991af0d7a3a5d82bd3f41a077ce401.tar.zst nixpkgs-bd2ad77e38991af0d7a3a5d82bd3f41a077ce401.zip |
Merge remote-tracking branch 'nixpkgs/master' into master
Diffstat (limited to 'pkgs/development/tools/poetry2nix/poetry2nix/semver.nix')
-rw-r--r-- | pkgs/development/tools/poetry2nix/poetry2nix/semver.nix | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/pkgs/development/tools/poetry2nix/poetry2nix/semver.nix b/pkgs/development/tools/poetry2nix/poetry2nix/semver.nix index 620bb25ad97..784589a4ca4 100644 --- a/pkgs/development/tools/poetry2nix/poetry2nix/semver.nix +++ b/pkgs/development/tools/poetry2nix/poetry2nix/semver.nix @@ -1,14 +1,8 @@ -{ lib }: +{ lib, ireplace }: let inherit (builtins) elemAt match; - # Replace a list entry at defined index with set value - ireplace = idx: value: list: let - inherit (builtins) genList length; - in - genList (i: if i == idx then value else (elemAt list i)) (length list); - operators = let matchWildCard = s: match "([^\*])(\.[\*])" s; mkComparison = ret: version: v: builtins.compareVersions version v == ret; @@ -37,10 +31,23 @@ let ">=" = v: c: operators."==" v c || operators.">" v c; "<=" = v: c: operators."==" v c || operators."<" v c; # Semver specific operators - "~" = mkIdxComparison 1; # + "~" = mkIdxComparison 1; "^" = mkIdxComparison 0; + "~=" = v: c: let + # Prune constraint + parts = builtins.splitVersion c; + pruned = lib.take ((builtins.length parts) - 1) parts; + upper = builtins.toString ( + (lib.toInt (builtins.elemAt pruned (builtins.length pruned - 1))) + 1 + ); + upperConstraint = builtins.concatStringsSep "." (ireplace (builtins.length pruned - 1) upper pruned); + in + operators.">=" v c && operators."<" v upperConstraint; # Infix operators "-" = version: v: operators.">=" version v.vl && operators."<=" version v.vu; + # Arbitrary equality clause, just run simple comparison + "===" = v: c: v == c; + # }; re = { |