feat(deps): add fish-deps unified dependency management command #17

Merged
rootiest merged 21 commits from feat/fish-deps into main 2026-05-19 03:53:52 +00:00
2 changed files with 19 additions and 28 deletions
Showing only changes of commit a70e88c344 - Show all commits
+3 -3
View File
@@ -10,7 +10,7 @@
# _fdc_cargo — cargo crate name, or "" if not on crates.io # _fdc_cargo — cargo crate name, or "" if not on crates.io
# _fdc_pm — system PM package name, or "" if not in repos # _fdc_pm — system PM package name, or "" if not in repos
# _fdc_special — special install key: fisher-bootstrap | fzf-update | # _fdc_special — special install key: fisher-bootstrap | fzf-update |
# paru-build | pipx | curl-installer | "" (none) # pipx | curl-installer | "" (none)
function _fish_deps_catalog function _fish_deps_catalog
set -g _fdc_bins \ set -g _fdc_bins \
fish fisher starship fzf zoxide direnv paru \ fish fisher starship fzf zoxide direnv paru \
@@ -28,12 +28,12 @@ function _fish_deps_catalog
eza lsd bat "" du-dust "" "" "" ripgrep "" "" trash-cli "" "" eza lsd bat "" du-dust "" "" "" ripgrep "" "" trash-cli "" ""
set -g _fdc_pm \ set -g _fdc_pm \
fish "" starship fzf zoxide direnv paru \ fish "" starship fzf zoxide direnv "" \
wakatime tailscale \ wakatime tailscale \
eza lsd bat btop dust duf prettyping most ripgrep lazygit lazydocker trash kitty wezterm eza lsd bat btop dust duf prettyping most ripgrep lazygit lazydocker trash kitty wezterm
set -g _fdc_special \ set -g _fdc_special \
"" fisher-bootstrap curl-installer fzf-update "" "" paru-build \ "" fisher-bootstrap curl-installer fzf-update "" "" "" \
pipx "" \ pipx "" \
"" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""
end end
+16 -25
View File
@@ -20,13 +20,19 @@ function _fish_deps_install
set -l methods set -l methods
set -l method_labels set -l method_labels
# Cargo — only if cargo is present and the tool has a crate # Cargo first — preferred for Rust tools; gets the latest crate version
if test -n "$cargo_crate"; and type -q cargo if test -n "$cargo_crate"
set -a methods cargo if type -q cargo
set -a method_labels "cargo ($cargo_crate)" 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"
set_color normal
end
end end
# System PM — only if a PM is detected and the tool is in repos # System PM — after cargo so cargo is always the default when available
if test -n "$pm_pkg"; and test -n "$pm" if test -n "$pm_pkg"; and test -n "$pm"
set -a methods pm set -a methods pm
set -a method_labels "$pm ($pm_pkg)" set -a method_labels "$pm ($pm_pkg)"
@@ -43,15 +49,6 @@ function _fish_deps_install
case curl-installer case curl-installer
set -a methods special-curl set -a methods special-curl
set -a method_labels "curl installer" set -a method_labels "curl installer"
case paru-build
if type -q yay
set -a methods special-yay-paru
set -a method_labels "yay -S paru"
end
if type -q pacman
set -a methods special-paru
set -a method_labels "build from AUR (makepkg)"
end
case pipx case pipx
if type -q pipx if type -q pipx
set -a methods special-pipx set -a methods special-pipx
@@ -83,13 +80,16 @@ function _fish_deps_install
echo " Available methods:" echo " Available methods:"
set -l m 1 set -l m 1
for lbl in $method_labels for lbl in $method_labels
echo " $m) $lbl" set_color brblack; echo -n " $m) "; set_color normal
echo $lbl
set m (math $m + 1) set m (math $m + 1)
end end
read -l -P " Choose [1-"(count $methods)"] (default 1): " _choice read -l -P " Choose [1-"(count $methods)"] (default 1 = $method_labels[1]): " _choice
if test -n "$_choice"; and test "$_choice" -ge 1; and test "$_choice" -le (count $methods) if test -n "$_choice"; and test "$_choice" -ge 1; and test "$_choice" -le (count $methods)
set chosen_method $methods[$_choice] set chosen_method $methods[$_choice]
end end
else
set_color brblack; echo " Installing via $method_labels[1]"; set_color normal
end end
# Execute chosen method # Execute chosen method
@@ -107,15 +107,6 @@ function _fish_deps_install
if test "$bin" = starship if test "$bin" = starship
curl -sS https://starship.rs/install.sh | sh curl -sS https://starship.rs/install.sh | sh
end end
case special-yay-paru
yay -S --noconfirm paru
case special-paru
set -l _build_dir (mktemp -d)
git clone https://aur.archlinux.org/paru.git $_build_dir
and pushd $_build_dir
and makepkg -si --noconfirm
and popd
rm -rf $_build_dir
case special-pipx case special-pipx
pipx install $bin pipx install $bin
case special-pip case special-pip