__fish_palette's c_cmd/c_flag/c_arg/c_dim now read fish's own highlighter variables (fish_color_command/option/param/autosuggestion) when set, and c_head reads the pager's fish_pager_color_prefix, so --help text matches whatever the user's actual theme renders at the prompt instead of a fixed guess at it. Each role keeps its previous static value as a fallback (e.g. a --no-config script, or the theme variable being unset or empty). Routes __fish_help_header's title/section colors and config-help's, gi's, and git-clean's own hand-rolled --help blocks through the palette instead of their hardcoded set_color calls, which fixes the --help-vs-actual-prompt color mismatch across most of the config's functions in one place (__fish_help_header backs the majority of user-facing --help output). Also fixes role mismatches found along the way: several already-palette functions (dockup, fish-deps, pkg, play-media, dng2avif) were coloring their <placeholder>/[bracket] argument text with c_dim instead of c_arg, and scrub's "Aggressive Targets:" heading was still a hardcoded set_color call sitting next to an otherwise-converted help block.
121 lines
4.4 KiB
Fish
121 lines
4.4 KiB
Fish
# Copyright (C) 2026 Rootiest
|
|
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
|
|
# CATEGORY
|
|
# 06-dependency-management
|
|
#
|
|
# SYNOPSIS
|
|
# fish-deps [status|install|update|sync] [--optional] [--terminals] [--all]
|
|
#
|
|
# DESCRIPTION
|
|
# Unified command for managing all tools this configuration depends on,
|
|
# dispatching to subcommand handlers. Defaults to status when no subcommand
|
|
# is given.
|
|
#
|
|
# Install method priority (highest to lowest):
|
|
# 1. git+cargo source build (fish shell itself)
|
|
# 2. cargo (Rust tools — gets latest crate version)
|
|
# 3. system PM (paru/apt/brew/etc.)
|
|
# 4. git clone (fzf)
|
|
# 5. curl installer (starship, fisher, uv)
|
|
#
|
|
# When multiple methods are available you are prompted to choose.
|
|
#
|
|
# Dependencies are grouped into five tiers:
|
|
#
|
|
# Required fish, fzf
|
|
# Recommended cargo, starship, uv, zoxide, direnv, paru, yay,
|
|
# eza, lsd, bat, ov, ripgrep, trash, python3
|
|
# Optional btop, dust, duf, prettyping, go, lazygit,
|
|
# lazydocker, docker, yt-dlp, screen — single-purpose
|
|
# wrapper conveniences that only matter if you
|
|
# already use that tool; skipped by install/sync
|
|
# unless --optional (or --all) is passed
|
|
# Terminal Emulators kitty, wezterm — only matter if one of them is
|
|
# your actual terminal; skipped by install/sync
|
|
# unless --terminals (or --all) is passed
|
|
# Integrations wakatime, tailscale
|
|
#
|
|
# ARGUMENTS
|
|
# status Report installed/missing deps (default)
|
|
# install Install missing deps interactively
|
|
# update Update all installed deps
|
|
# sync Install missing deps, then update all
|
|
# --optional With install/sync: also offer Optional-tier deps
|
|
# --terminals With install/sync: also offer Terminal-Emulator-tier deps
|
|
# --all With install/sync: shorthand for --optional --terminals
|
|
#
|
|
# EXIT STATUS
|
|
# 0 Subcommand completed
|
|
# 1 Unknown subcommand
|
|
#
|
|
# EXAMPLE
|
|
# fish-deps sync
|
|
# fish-deps
|
|
# fish-deps install
|
|
# fish-deps install --optional
|
|
# fish-deps install --terminals
|
|
# fish-deps install --all
|
|
# fish-deps update
|
|
function fish-deps --description 'Manage fish shell dependencies'
|
|
set -l subcmd $argv[1]
|
|
set -l flags $argv[2..]
|
|
|
|
switch $subcmd
|
|
case status ''
|
|
_fish_deps_status
|
|
case install
|
|
_fish_deps_install $flags
|
|
case -h --help
|
|
# Reuse the existing menu rather than the header renderer: it
|
|
# is richer, and it is already the text the unknown-subcommand
|
|
# path prints. Previously --help fell into `case '*'` and
|
|
# exited 1 with "Unknown subcommand: --help".
|
|
__fish_deps_help
|
|
return 0
|
|
case update
|
|
_fish_deps_update
|
|
case sync
|
|
echo "=== Installing missing deps ==="
|
|
_fish_deps_install $flags
|
|
echo ""
|
|
echo "=== Updating installed deps ==="
|
|
_fish_deps_update
|
|
case '*'
|
|
set_color red
|
|
echo "Unknown subcommand: $subcmd"
|
|
set_color normal
|
|
echo ""
|
|
__fish_deps_help
|
|
return 1
|
|
end
|
|
end
|
|
|
|
# SYNOPSIS
|
|
# __fish_deps_help
|
|
#
|
|
# DESCRIPTION
|
|
# Prints usage and subcommand reference for the fish-deps command to stdout.
|
|
#
|
|
# EXAMPLE
|
|
# __fish_deps_help
|
|
function __fish_deps_help
|
|
__fish_palette
|
|
|
|
echo "$c_head""fish-deps$c_reset — manage fish shell dependencies"
|
|
echo ""
|
|
echo "$c_head""Usage:$c_reset"
|
|
echo " $c_cmd""fish-deps$c_reset $c_arg""[status]$c_reset Check installed/missing deps (default)"
|
|
echo " $c_cmd""fish-deps$c_reset install Install missing deps interactively"
|
|
echo " $c_cmd""fish-deps$c_reset update Update all installed deps"
|
|
echo " $c_cmd""fish-deps$c_reset sync Install missing, then update all"
|
|
echo ""
|
|
echo " install/sync accept:"
|
|
echo " $c_flag--optional$c_reset Also offer Optional-tier deps (skipped by default)"
|
|
echo " $c_flag--terminals$c_reset Also offer Terminal-Emulator-tier deps (skipped by default)"
|
|
echo " $c_flag--all$c_reset Shorthand for --optional --terminals"
|
|
echo ""
|
|
echo "Install method priority: cargo > system PM > git/curl/pipx"
|
|
echo "When multiple methods are available, you will be prompted to choose."
|
|
end
|