From 76df8fa086dfa0c9bf8b6c8dd91526b89f7a508f Mon Sep 17 00:00:00 2001 From: Parthiv Seetharaman Date: Fri, 14 Mar 2025 14:18:51 -0700 Subject: [PATCH] fix wild cards and subcrates --- tools.nix | 34 ++++++++++++++++------------------ 1 file changed, 16 insertions(+), 18 deletions(-) diff --git a/tools.nix b/tools.nix index 3a867d4d..0d99ef13 100644 --- a/tools.nix +++ b/tools.nix @@ -403,32 +403,30 @@ rec { else parsed.urlFragment; }; - rootCargo = builtins.fromTOML (builtins.readFile "${src}/Cargo.toml"); - isWorkspace = rootCargo ? "workspace"; - isPackage = rootCargo ? "package"; - containedCrates = rootCargo.workspace.members ++ (if isPackage then [ "." ] else [ ]); + allCargoTomls = lib.filter + (lib.hasSuffix "Cargo.toml") + (lib.filesystem.listFilesRecursive src); getCrateNameFromPath = path: let - cargoTomlCrate = builtins.fromTOML (builtins.readFile "${src}/${path}/Cargo.toml"); + cargoTomlCrate = builtins.fromTOML (builtins.readFile path); in - cargoTomlCrate.package.name; - - pathToExtract = - if isWorkspace then - builtins.head - (builtins.filter - (to_filter: - (getCrateNameFromPath to_filter) == name - ) - containedCrates) - else - "."; + cargoTomlCrate.package.name or null; + + packageCargoToml = + builtins.head + (builtins.filter + (to_filter: + (getCrateNameFromPath to_filter) == name + ) + allCargoTomls); + + pathToExtract = lib.removeSuffix "Cargo.toml" packageCargoToml; in pkgs.runCommand (lib.removeSuffix ".tar.gz" src.name) { } '' mkdir -p $out - cp -apR ${src}/${pathToExtract}/* $out + cp -apR ${pathToExtract}/* $out echo '{"package":null,"files":{}}' > $out/.cargo-checksum.json '';