about summary refs log tree commit diff
path: root/lib/versions.nix
diff options
context:
space:
mode:
Diffstat (limited to 'lib/versions.nix')
-rw-r--r--lib/versions.nix15
1 files changed, 15 insertions, 0 deletions
diff --git a/lib/versions.nix b/lib/versions.nix
index 0e9d81ac78b1e..986e7e5f9b37d 100644
--- a/lib/versions.nix
+++ b/lib/versions.nix
@@ -46,4 +46,19 @@ rec {
     builtins.concatStringsSep "."
     (lib.take 2 (splitVersion v));
 
+  /* Pad a version string with zeros to match the given number of components.
+
+     Example:
+       pad 3 "1.2"
+       => "1.2.0"
+       pad 3 "1.3-rc1"
+       => "1.3.0-rc1"
+       pad 3 "1.2.3.4"
+       => "1.2.3"
+  */
+  pad = n: version: let
+    numericVersion = lib.head (lib.splitString "-" version);
+    versionSuffix = lib.removePrefix numericVersion version;
+  in lib.concatStringsSep "." (lib.take n (lib.splitVersion numericVersion ++ lib.genList (_: "0") n)) + versionSuffix;
+
 }