diff --git a/scripts/package/src/package_managers/cargo.sh b/scripts/package/src/package_managers/cargo.sh index 28903f14..f95eb5a3 100644 --- a/scripts/package/src/package_managers/cargo.sh +++ b/scripts/package/src/package_managers/cargo.sh @@ -1,4 +1,9 @@ cargo::update_all() { - cargo install --list | grep -E '^[a-z0-9_-]+ v[0-9.]+:$' | cut -f1 -d' ' | xargs -n1 cargo install + # A plain `xargs cargo install` still runs once with no arguments when no crate is + # installed, and `cargo install` alone tries to install the current directory. + cargo install --list | grep -E '^[a-z0-9_-]+ v[0-9.]+:$' | cut -f1 -d' ' | + while read -r cargo_package; do + cargo install "$cargo_package" + done output::answer "Done" }