summary refs log tree commit diff
diff options
context:
space:
mode:
authorJohn Ericson <John.Ericson@Obsidian.Systems>2019-11-24 16:19:32 +0000
committerJohn Ericson <John.Ericson@Obsidian.Systems>2019-11-24 16:24:50 +0000
commit84a105254d52d8ded6c5365399b61bea14505cd7 (patch)
tree3932ddfd313b2f3e48fd13f8bf266310a7ce27ba
parent62d64297932068b5afa25fb66ed396cd38ef293a (diff)
downloadnixpkgs-84a105254d52d8ded6c5365399b61bea14505cd7.tar
nixpkgs-84a105254d52d8ded6c5365399b61bea14505cd7.tar.gz
nixpkgs-84a105254d52d8ded6c5365399b61bea14505cd7.tar.bz2
nixpkgs-84a105254d52d8ded6c5365399b61bea14505cd7.tar.lz
nixpkgs-84a105254d52d8ded6c5365399b61bea14505cd7.tar.xz
nixpkgs-84a105254d52d8ded6c5365399b61bea14505cd7.tar.zst
nixpkgs-84a105254d52d8ded6c5365399b61bea14505cd7.zip
lib: Add getName to mirror getVersion
-rw-r--r--lib/default.nix3
-rw-r--r--lib/strings.nix17
2 files changed, 19 insertions, 1 deletions
diff --git a/lib/default.nix b/lib/default.nix
index 18d2dfae1e1..0e840dd6c9e 100644
--- a/lib/default.nix
+++ b/lib/default.nix
@@ -84,7 +84,8 @@ let
       hasInfix hasPrefix hasSuffix stringToCharacters stringAsChars escape
       escapeShellArg escapeShellArgs replaceChars lowerChars
       upperChars toLower toUpper addContextFrom splitString
-      removePrefix removeSuffix versionOlder versionAtLeast getVersion
+      removePrefix removeSuffix versionOlder versionAtLeast
+      getName getVersion
       nameFromURL enableFeature enableFeatureAs withFeature
       withFeatureAs fixedWidthString fixedWidthNumber isStorePath
       toInt readPathsFromFile fileContents;
diff --git a/lib/strings.nix b/lib/strings.nix
index ae0d74c6721..6dbb3d3a3e8 100644
--- a/lib/strings.nix
+++ b/lib/strings.nix
@@ -473,6 +473,23 @@ rec {
   versionAtLeast = v1: v2: !versionOlder v1 v2;
 
   /* This function takes an argument that's either a derivation or a
+     derivation's "name" attribute and extracts the name part from that
+     argument.
+
+     Example:
+       getName "youtube-dl-2016.01.01"
+       => "youtube-dl"
+       getName pkgs.youtube-dl
+       => "youtube-dl"
+  */
+  getName = x:
+   let
+     parse = drv: (builtins.parseDrvName drv).name;
+   in if isString x
+      then parse x
+      else x.pname or (parse x.name);
+
+  /* This function takes an argument that's either a derivation or a
      derivation's "name" attribute and extracts the version part from that
      argument.