summary refs log tree commit diff
path: root/pkgs/build-support/fetchzip/default.nix
diff options
context:
space:
mode:
authorBenjamin Hipple <bhipple@protonmail.com>2020-02-02 16:56:11 -0500
committerBenjamin Hipple <bhipple@protonmail.com>2020-02-08 21:51:46 -0500
commitcaff18340206c4e5c466c16a534f13505d1098ee (patch)
tree446e7d33227fef84ff21cbc9bc9580810491b9c3 /pkgs/build-support/fetchzip/default.nix
parent8396961c9cc67d0a12c0bcf475de77d9a849fd7b (diff)
downloadnixpkgs-caff18340206c4e5c466c16a534f13505d1098ee.tar
nixpkgs-caff18340206c4e5c466c16a534f13505d1098ee.tar.gz
nixpkgs-caff18340206c4e5c466c16a534f13505d1098ee.tar.bz2
nixpkgs-caff18340206c4e5c466c16a534f13505d1098ee.tar.lz
nixpkgs-caff18340206c4e5c466c16a534f13505d1098ee.tar.xz
nixpkgs-caff18340206c4e5c466c16a534f13505d1098ee.tar.zst
nixpkgs-caff18340206c4e5c466c16a534f13505d1098ee.zip
fetchzip, fetchgit: cleanup handling of optional features and whitespace
No intended functional difference, just trying to polish to make this easier to
extend and more aligned with other nix conventions.
Diffstat (limited to 'pkgs/build-support/fetchzip/default.nix')
-rw-r--r--pkgs/build-support/fetchzip/default.nix57
1 files changed, 28 insertions, 29 deletions
diff --git a/pkgs/build-support/fetchzip/default.nix b/pkgs/build-support/fetchzip/default.nix
index c61df8ceb00..9d829e43ccb 100644
--- a/pkgs/build-support/fetchzip/default.nix
+++ b/pkgs/build-support/fetchzip/default.nix
@@ -5,47 +5,46 @@
 # (e.g. due to minor changes in the compression algorithm, or changes
 # in timestamps).
 
-{ fetchurl, unzip }:
+{ lib, fetchurl, unzip }:
 
-{ # Optionally move the contents of the unpacked tree up one level.
-  stripRoot ? true
+{ name ? "source"
 , url
+  # Optionally move the contents of the unpacked tree up one level.
+, stripRoot ? true
 , extraPostFetch ? ""
-, name ? "source"
 , ... } @ args:
 
 (fetchurl ({
   inherit name;
 
   recursiveHash = true;
-
   downloadToTemp = true;
 
-  postFetch =
-    ''
-      unpackDir="$TMPDIR/unpack"
-      mkdir "$unpackDir"
-      cd "$unpackDir"
+  postFetch = ''
+    unpackDir="$TMPDIR/unpack"
+    mkdir "$unpackDir"
+    cd "$unpackDir"
+
+    renamed="$TMPDIR/${baseNameOf url}"
+    mv "$downloadedFile" "$renamed"
+    unpackFile "$renamed"
+    result=$unpackDir
+  ''
+  # Most src disted tarballs have a parent directory like foo-1.2.3/ to strip
+  + lib.optionalString stripRoot ''
+    if [ $(ls "$unpackDir" | wc -l) != 1 ]; then
+      echo "error: zip file must contain a single file or directory."
+      echo "hint: Pass stripRoot=false; to fetchzip to assume flat list of files."
+      exit 1
+    fi
+    fn=$(cd "$unpackDir" && echo *)
+    result="$unpackDir/$fn"
+  '' + ''
+    mkdir $out
+    mv "$result" "$out"
+  ''
+  + extraPostFetch;
 
-      renamed="$TMPDIR/${baseNameOf url}"
-      mv "$downloadedFile" "$renamed"
-      unpackFile "$renamed"
-    ''
-    + (if stripRoot then ''
-      if [ $(ls "$unpackDir" | wc -l) != 1 ]; then
-        echo "error: zip file must contain a single file or directory."
-        echo "hint: Pass stripRoot=false; to fetchzip to assume flat list of files."
-        exit 1
-      fi
-      fn=$(cd "$unpackDir" && echo *)
-      if [ -f "$unpackDir/$fn" ]; then
-        mkdir $out
-      fi
-      mv "$unpackDir/$fn" "$out"
-    '' else ''
-      mv "$unpackDir" "$out"
-    '') #*/
-    + extraPostFetch;
 } // removeAttrs args [ "stripRoot" "extraPostFetch" ])).overrideAttrs (x: {
   # Hackety-hack: we actually need unzip hooks, too
   nativeBuildInputs = x.nativeBuildInputs ++ [ unzip ];