9b342114aa
Introduces `fish-deps` with four subcommands: - status: colored installed/missing report per tier (required/integrations/recommended) - install: interactively install each missing dep, prompts method when multiple exist - update: update all installed deps using their preferred method - sync: install missing then update installed Install method priority: cargo (Rust tools get latest crate) > system PM (paru/pacman/apt/brew/pkg/dnf/yum) > git clone (fzf via fzf-update) > curl installer (starship, fisher) > pipx (wakatime). Splits into focused helper files: - _fish_deps_catalog.fish: parallel-array dep catalog with tiers, cargo crates, PM names, special install keys - _fish_deps_pm.fish: PM detection and install/upgrade helpers - _fish_deps_status.fish: tier-grouped colored status display - _fish_deps_install.fish: per-dep interactive install with method selection - _fish_deps_update.fish: per-dep update using known install method check_fish_deps becomes a thin wrapper delegating to `fish-deps status`. README updated with Dependency Management section.
66 lines
1.7 KiB
Fish
66 lines
1.7 KiB
Fish
# Copyright (C) 2026 Rootiest
|
|
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
|
|
# Detect the first available system package manager.
|
|
function _fish_deps_detect_pm
|
|
for pm in paru pacman apt brew pkg dnf yum
|
|
if type -q $pm
|
|
echo $pm
|
|
return
|
|
end
|
|
end
|
|
echo ""
|
|
end
|
|
|
|
# Install a package via the system PM.
|
|
# Usage: _fish_deps_pm_install <pkg>
|
|
function _fish_deps_pm_install --argument-names pkg
|
|
set -l pm (_fish_deps_detect_pm)
|
|
if test -z "$pm"
|
|
echo "No supported package manager found." >&2
|
|
return 1
|
|
end
|
|
switch $pm
|
|
case paru
|
|
paru -S --noconfirm $pkg
|
|
case pacman
|
|
sudo pacman -S --noconfirm $pkg
|
|
case apt
|
|
sudo apt install -y $pkg
|
|
case brew
|
|
brew install $pkg
|
|
case pkg
|
|
sudo pkg install -y $pkg
|
|
case dnf
|
|
sudo dnf install -y $pkg
|
|
case yum
|
|
sudo yum install -y $pkg
|
|
end
|
|
end
|
|
|
|
# Upgrade an already-installed package via the system PM.
|
|
# Usage: _fish_deps_pm_upgrade <pkg>
|
|
function _fish_deps_pm_upgrade --argument-names pkg
|
|
set -l pm (_fish_deps_detect_pm)
|
|
if test -z "$pm"
|
|
echo "No supported package manager found." >&2
|
|
return 1
|
|
end
|
|
switch $pm
|
|
case paru
|
|
paru -S --noconfirm $pkg
|
|
case pacman
|
|
sudo pacman -S --noconfirm $pkg
|
|
case apt
|
|
sudo apt install --only-upgrade -y $pkg
|
|
case brew
|
|
brew upgrade $pkg
|
|
case pkg
|
|
sudo pkg upgrade -y $pkg
|
|
case dnf
|
|
sudo dnf upgrade -y $pkg
|
|
case yum
|
|
sudo yum update -y $pkg
|
|
end
|
|
end
|