2022-02-11 07:32:31 +03:00
|
|
|
{ cargo
|
|
|
|
, jq
|
|
|
|
, remarshal
|
|
|
|
, runCommandLocal
|
2022-02-08 07:03:12 +03:00
|
|
|
}:
|
|
|
|
|
2022-02-11 07:32:31 +03:00
|
|
|
{ git
|
2022-02-08 07:03:12 +03:00
|
|
|
, rev
|
|
|
|
}@args:
|
|
|
|
let
|
|
|
|
repo = builtins.fetchGit {
|
|
|
|
inherit rev;
|
|
|
|
url = git;
|
|
|
|
submodules = true;
|
|
|
|
};
|
2022-02-11 07:32:31 +03:00
|
|
|
|
|
|
|
deps = {
|
|
|
|
nativeBuildInputs = [
|
|
|
|
cargo
|
|
|
|
jq
|
|
|
|
remarshal
|
|
|
|
];
|
|
|
|
};
|
2022-02-08 07:03:12 +03:00
|
|
|
in
|
2022-02-11 07:32:31 +03:00
|
|
|
runCommandLocal "cargo-git" deps ''
|
|
|
|
mkdir -p $out
|
|
|
|
while read -r cargoToml; do
|
|
|
|
local crate=$(toml2json <"$cargoToml" | \
|
|
|
|
jq -r 'select(.package != null) | .package | "\(.name)-\(.version)"'
|
|
|
|
)
|
|
|
|
|
|
|
|
if [ -n "$crate" ]; then
|
|
|
|
local dest="$out/$crate"
|
|
|
|
cp -r "$(dirname "$cargoToml")" "$dest"
|
|
|
|
chmod +w "$dest"
|
|
|
|
echo '{"files":{}, "package":null}' > "$dest/.cargo-checksum.json"
|
|
|
|
fi
|
|
|
|
done < <(find ${repo} -name Cargo.toml)
|
2022-02-08 07:03:12 +03:00
|
|
|
''
|