summaryrefslogtreecommitdiffstats
path: root/lib/versions.nix
diff options
context:
space:
mode:
authorRyan Mulligan <ryan@ryantm.com>2018-03-02 20:26:32 -0800
committerRyan Mulligan <ryan@ryantm.com>2018-03-04 06:28:34 -0800
commita9d0778cd4e0cdb92d46c73032b125c4b98dc66e (patch)
treea90809a12dea3971a99486ae8ce11e6001cc6126 /lib/versions.nix
parentb84fd70d88f121de536f48c7bc08b3678fe8cabd (diff)
lib: add versions library
Diffstat (limited to 'lib/versions.nix')
-rw-r--r--lib/versions.nix47
1 files changed, 47 insertions, 0 deletions
diff --git a/lib/versions.nix b/lib/versions.nix
new file mode 100644
index 000000000000..8f7f98ff5e1e
--- /dev/null
+++ b/lib/versions.nix
@@ -0,0 +1,47 @@
+/* Version string functions. */
+{ lib }:
+
+let
+
+ splitVersion = builtins.splitVersion or (lib.splitString ".");
+
+in
+
+rec {
+
+ /* Get the major version string from a string.
+
+ Example:
+ major "1.2.3"
+ => "1"
+ */
+ major = v: builtins.elemAt (splitVersion v) 0;
+
+ /* Get the minor version string from a string.
+
+ Example:
+ minor "1.2.3"
+ => "2"
+ */
+ minor = v: builtins.elemAt (splitVersion v) 1;
+
+ /* Get the patch version string from a string.
+
+ Example:
+ patch "1.2.3"
+ => "3"
+ */
+ patch = v: builtins.elemAt (splitVersion v) 2;
+
+ /* Get string of the first two parts (major and minor)
+ of a version string.
+
+ Example:
+ majorMinor "1.2.3"
+ => "1.2"
+ */
+ majorMinor = v:
+ builtins.concatStringsSep "."
+ (lib.take 2 (splitVersion v));
+
+}