9e7539d863
Fish 4.x is a Rust rewrite published to crates.io as 'fish'. Added the crate to the catalog so fish-deps update will run cargo install --force fish to upgrade it. A yellow restart reminder is printed after the upgrade since the new binary won't take effect until the shell restarts. README warning updated to mention cargo install fish as the upgrade path for users stuck on Fish 3.x.
101 lines
2.8 KiB
Fish
101 lines
2.8 KiB
Fish
# Copyright (C) 2026 Rootiest
|
|
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
|
|
# Update all installed deps using their known install method.
|
|
# Priority: cargo > system PM > special (fzf-update, fisher, pipx).
|
|
function _fish_deps_update
|
|
_fish_deps_catalog
|
|
|
|
set -l pm (_fish_deps_detect_pm)
|
|
set -l updated_any 0
|
|
|
|
# Fisher plugins — always update if fisher is present
|
|
if type -q fisher
|
|
echo "Updating fisher plugins..."
|
|
fisher update
|
|
set updated_any 1
|
|
end
|
|
|
|
set -l i 1
|
|
for bin in $_fdc_bins
|
|
# Skip fisher itself (handled above) and tools that aren't installed
|
|
if test "$bin" = fisher; or not type -q $bin
|
|
set i (math $i + 1)
|
|
continue
|
|
end
|
|
|
|
set -l cargo_crate $_fdc_cargo[$i]
|
|
set -l pm_pkg $_fdc_pm[$i]
|
|
set -l special $_fdc_special[$i]
|
|
|
|
# cargo: update via rustup
|
|
if test "$special" = rustup-installer
|
|
if type -q rustup
|
|
echo "Updating $bin..."
|
|
rustup update
|
|
set updated_any 1
|
|
end
|
|
set i (math $i + 1)
|
|
continue
|
|
end
|
|
|
|
# fzf: always use fzf-update (git-based)
|
|
if test "$special" = fzf-update
|
|
echo "Updating $bin..."
|
|
fzf-update
|
|
set updated_any 1
|
|
set i (math $i + 1)
|
|
continue
|
|
end
|
|
|
|
# pipx tools
|
|
if test "$special" = pipx
|
|
if type -q pipx
|
|
echo "Updating $bin..."
|
|
pipx upgrade $bin
|
|
set updated_any 1
|
|
end
|
|
set i (math $i + 1)
|
|
continue
|
|
end
|
|
|
|
# curl-installer tools (starship etc.): re-run install script, which upgrades in place
|
|
if test "$special" = curl-installer
|
|
if test "$bin" = starship
|
|
echo "Updating $bin..."
|
|
curl -sS https://starship.rs/install.sh | sh -- --yes
|
|
set updated_any 1
|
|
end
|
|
set i (math $i + 1)
|
|
continue
|
|
end
|
|
|
|
# Cargo: prefer for Rust tools
|
|
if test -n "$cargo_crate"; and type -q cargo
|
|
echo "Updating $bin..."
|
|
cargo install --force $cargo_crate
|
|
set updated_any 1
|
|
if test "$bin" = fish
|
|
set_color yellow
|
|
echo " Fish updated — restart your shell to use the new version."
|
|
set_color normal
|
|
end
|
|
set i (math $i + 1)
|
|
continue
|
|
end
|
|
|
|
# System PM fallback
|
|
if test -n "$pm_pkg"; and test -n "$pm"
|
|
echo "Updating $bin..."
|
|
_fish_deps_pm_upgrade $pm_pkg
|
|
set updated_any 1
|
|
end
|
|
|
|
set i (math $i + 1)
|
|
end
|
|
|
|
if test $updated_any -eq 0
|
|
echo "Nothing to update."
|
|
end
|
|
end
|