From a9d0778cd4e0cdb92d46c73032b125c4b98dc66e Mon Sep 17 00:00:00 2001 From: Ryan Mulligan Date: Fri, 2 Mar 2018 20:26:32 -0800 Subject: [PATCH] lib: add versions library --- lib/default.nix | 2 +- lib/versions.nix | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 lib/versions.nix diff --git a/lib/default.nix b/lib/default.nix index a25a23299b39..85d196750433 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -24,7 +24,7 @@ let maintainers = callLibs ./maintainers.nix; meta = callLibs ./meta.nix; sources = callLibs ./sources.nix; - + versions = callLibs ./versions.nix; # module system modules = callLibs ./modules.nix; 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)); + +}