fetchCrate: rewrite in terms of fetchzip

This commit is contained in:
figsoda 2022-11-03 12:33:27 -04:00
parent e5691c322f
commit 9508a4ac68

View file

@ -1,38 +1,15 @@
{ lib, fetchurl, unzip }: { lib, fetchzip }:
{ crateName ? args.pname { crateName ? args.pname
, pname ? null , pname ? null
, version , version
, sha256 , ...
, ... } @ args: } @ args:
assert pname == null || pname == crateName; assert pname == null || pname == crateName;
lib.overrideDerivation (fetchurl ({ fetchzip ({
name = "${crateName}-${version}.tar.gz"; name = "${crateName}-${version}.tar.gz";
url = "https://crates.io/api/v1/crates/${crateName}/${version}/download"; url = "https://crates.io/api/v1/crates/${crateName}/${version}/download";
recursiveHash = true; extension = "tar.gz";
} // removeAttrs args [ "crateName" "pname" "version" ])
downloadToTemp = true;
postFetch =
''
export PATH=${unzip}/bin:$PATH
unpackDir="$TMPDIR/unpack"
mkdir "$unpackDir"
cd "$unpackDir"
renamed="$TMPDIR/${crateName}-${version}.tar.gz"
mv "$downloadedFile" "$renamed"
unpackFile "$renamed"
fn=$(cd "$unpackDir" && echo *)
if [ -f "$unpackDir/$fn" ]; then
mkdir $out
fi
mv "$unpackDir/$fn" "$out"
'';
} // removeAttrs args [ "crateName" "pname" "version" ]))
# Hackety-hack: we actually need unzip hooks, too
(x: {nativeBuildInputs = x.nativeBuildInputs++ [unzip];})