feat(deps): support upgrading fish itself via cargo install fish

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.
This commit is contained in:
2026-05-18 22:23:10 -04:00
parent 6fd1e3221e
commit 9e7539d863
3 changed files with 11 additions and 1 deletions
+5
View File
@@ -502,6 +502,11 @@ Named context shortcuts (e.g. `dcr`, `dck`) live in `~/.config/.user-dots/fish/l
> [!WARNING]
> Fish **4.0 or newer is required.** This config uses `test` syntax and other constructs that are incompatible with Fish 3.x. Older versions will produce errors on startup.
> If you are on an older Fish, you can upgrade via cargo (Fish 4.x is a Rust rewrite published to crates.io):
> ```
> cargo install fish
> ```
> Or run `fish-deps update` once cargo is available — it will upgrade Fish via cargo automatically.
### Recommended
+1 -1
View File
@@ -25,7 +25,7 @@ function _fish_deps_catalog
rec rec rec rec rec rec rec rec rec rec rec rec rec rec
set -g _fdc_cargo \
"" "" "" starship "" zoxide "" "" \
fish "" "" starship "" zoxide "" "" \
"" "" \
eza lsd bat "" du-dust "" "" "" ripgrep "" "" trash-cli "" ""
+5
View File
@@ -75,6 +75,11 @@ function _fish_deps_update
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