feat(deps): add cargo as a managed dependency with rustup installer

cargo is now the second entry in the catalog (after fish) so it is
installed before any Rust tool that depends on it. Install preference:
rustup installer (curl | sh) first, system PM as fallback. Update
runs rustup update when rustup is available.

The rustup-installer special is evaluated before the system PM in the
method list so it is always option 1 / the default for cargo.
This commit is contained in:
2026-05-18 22:18:57 -04:00
parent abbbf20b40
commit df7c921bc6
3 changed files with 33 additions and 12 deletions
+12 -4
View File
@@ -20,25 +20,31 @@ function _fish_deps_install
set -l methods
set -l method_labels
# Cargo first — preferred for Rust tools; gets the latest crate version
# Cargo — preferred for Rust tools; gets the latest crate version
if test -n "$cargo_crate"
if type -q cargo
set -a methods cargo
set -a method_labels "cargo ($cargo_crate)"
else
set_color brblack
echo " note: cargo not found — install rustup for the latest $bin"
echo " note: cargo not found — install cargo first for the latest $bin"
set_color normal
end
end
# System PM — after cargo so cargo is always the default when available
# rustup installer — listed before system PM so it is the default for cargo itself
if test "$special" = rustup-installer
set -a methods special-rustup
set -a method_labels "rustup installer (curl | sh)"
end
# System PM — after cargo/rustup so those are always the default when available
if test -n "$pm_pkg"; and test -n "$pm"
set -a methods pm
set -a method_labels "$pm ($pm_pkg)"
end
# Special methods
# Remaining special methods
switch $special
case fzf-update
set -a methods special-fzf
@@ -108,6 +114,8 @@ function _fish_deps_install
cargo install $cargo_crate
case pm
_fish_deps_pm_install $pm_pkg
case special-rustup
curl https://sh.rustup.rs -sSf | sh
case special-fzf
fzf-update
case special-fisher