50 lines
		
	
	
		
			929 B
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			929 B
		
	
	
	
		
			Nix
		
	
	
	
	
	
/* Version string functions. */
 | 
						|
{ lib }:
 | 
						|
 | 
						|
rec {
 | 
						|
 | 
						|
  /* Break a version string into its component parts.
 | 
						|
 | 
						|
     Example:
 | 
						|
       splitVersion "1.2.3"
 | 
						|
       => ["1" "2" "3"]
 | 
						|
  */
 | 
						|
  splitVersion = builtins.splitVersion or (lib.splitString ".");
 | 
						|
 | 
						|
  /* 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));
 | 
						|
 | 
						|
}
 |