feat: install shell completions and man pages from archives

Updated install.sh for bat, fd, gh, goreleaser, lsd, rg, sd, watchexec,
and zoxide to extract and install shell completions (bash, fish, zsh) and
man pages from their release archives. Completions go to standard XDG
locations under the versioned opt directory. All moves use 2>/dev/null
fallbacks for older versions that don't include completions.
This commit is contained in:
AJ ONeal
2026-03-10 09:15:23 -06:00
parent e1529f5949
commit 1803c208c3
9 changed files with 136 additions and 5 deletions

View File

@@ -28,6 +28,22 @@ __init_bat() {
# chmod a+x ~/.local/opt/bat-v0.15.4/bin/bat
chmod a+x "$pkg_src_cmd"
# install completions if present (autocomplete/)
if test -d ./bat-*/autocomplete; then
mkdir -p "$pkg_src_dir/share/bash-completion/completions"
mkdir -p "$pkg_src_dir/share/fish/vendor_completions.d"
mkdir -p "$pkg_src_dir/share/zsh/site-functions"
mv ./bat-*/autocomplete/bat.bash "$pkg_src_dir/share/bash-completion/completions/bat" 2>/dev/null || true
mv ./bat-*/autocomplete/bat.fish "$pkg_src_dir/share/fish/vendor_completions.d/bat.fish" 2>/dev/null || true
mv ./bat-*/autocomplete/bat.zsh "$pkg_src_dir/share/zsh/site-functions/_bat" 2>/dev/null || true
fi
# install man page if present
if test -f ./bat-*/bat.1; then
mkdir -p "$pkg_src_dir/share/man/man1"
mv ./bat-*/bat.1 "$pkg_src_dir/share/man/man1/bat.1"
fi
if ! [ -e ~/.config/bat/config ]; then
mkdir -p ~/.config/bat/
touch ~/.config/bat/config

View File

@@ -27,6 +27,22 @@ __init_fd() {
# chmod a+x "$HOME/.local/opt/fd-v8.1.1/bin/fd"
chmod a+x "$pkg_src_cmd"
# install completions if present (autocomplete/{fd.bash,fd.fish,_fd})
if test -d ./fd-*/autocomplete; then
mkdir -p "$pkg_src_dir/share/bash-completion/completions"
mkdir -p "$pkg_src_dir/share/fish/vendor_completions.d"
mkdir -p "$pkg_src_dir/share/zsh/site-functions"
mv ./fd-*/autocomplete/fd.bash "$pkg_src_dir/share/bash-completion/completions/fd" 2>/dev/null || true
mv ./fd-*/autocomplete/fd.fish "$pkg_src_dir/share/fish/vendor_completions.d/fd.fish" 2>/dev/null || true
mv ./fd-*/autocomplete/_fd "$pkg_src_dir/share/zsh/site-functions/_fd" 2>/dev/null || true
fi
# install man page if present
if test -f ./fd-*/fd.1; then
mkdir -p "$pkg_src_dir/share/man/man1"
mv ./fd-*/fd.1 "$pkg_src_dir/share/man/man1/fd.1"
fi
}
}

View File

@@ -23,8 +23,14 @@ __init_gh() {
# ~/.local/opt/gh-v0.99.9/bin
mkdir -p "$(dirname "$pkg_src_cmd")"
# mv ./gh-*/gh ~/.local/opt/gh-v0.99.9/bin/gh
# mv ./gh_*/bin/gh ~/.local/opt/gh-v0.99.9/bin/gh
mv ./"$pkg_cmd_name"*/bin/gh "$pkg_src_cmd"
# install man pages if present
if test -d ./"$pkg_cmd_name"*/share/man; then
mkdir -p "$pkg_src_dir/share"
mv ./"$pkg_cmd_name"*/share/man "$pkg_src_dir/share/man"
fi
}
# pkg_get_current_version is recommended, but (soon) not required

View File

@@ -23,8 +23,25 @@ __init_goreleaser() {
# ~/.local/opt/goreleaser-v1.21.2/bin
mkdir -p "$(dirname "$pkg_src_cmd")"
# mv ./goreleaser-*/goreleaser ~/.local/opt/goreleaser-v1.21.2/bin/goreleaser
# mv ./goreleaser ~/.local/opt/goreleaser-v1.21.2/bin/goreleaser
mv ./goreleaser "$pkg_src_cmd"
# install completions if present (completions/{goreleaser.bash,.fish,.zsh})
if test -d ./completions; then
mkdir -p "$pkg_src_dir/share/bash-completion/completions"
mkdir -p "$pkg_src_dir/share/fish/vendor_completions.d"
mkdir -p "$pkg_src_dir/share/zsh/site-functions"
mv ./completions/goreleaser.bash "$pkg_src_dir/share/bash-completion/completions/goreleaser" 2>/dev/null || true
mv ./completions/goreleaser.fish "$pkg_src_dir/share/fish/vendor_completions.d/goreleaser.fish" 2>/dev/null || true
mv ./completions/goreleaser.zsh "$pkg_src_dir/share/zsh/site-functions/_goreleaser" 2>/dev/null || true
fi
# install man page if present (manpages/goreleaser.1.gz)
if test -d ./manpages; then
mkdir -p "$pkg_src_dir/share/man/man1"
mv ./manpages/*.1.gz "$pkg_src_dir/share/man/man1/" 2>/dev/null || true
mv ./manpages/*.1 "$pkg_src_dir/share/man/man1/" 2>/dev/null || true
fi
}
# pkg_get_current_version is recommended, but (soon) not required

View File

@@ -25,6 +25,22 @@ __init_lsd() {
# mv ./lsd-*/lsd ~/.local/opt/lsd-v0.17.0/bin/lsd
mv ./lsd-*/lsd "$pkg_src_cmd"
# install completions if present (autocomplete/{_lsd,lsd.fish,lsd.bash-completion})
if test -d ./lsd-*/autocomplete; then
mkdir -p "$pkg_src_dir/share/bash-completion/completions"
mkdir -p "$pkg_src_dir/share/fish/vendor_completions.d"
mkdir -p "$pkg_src_dir/share/zsh/site-functions"
mv ./lsd-*/autocomplete/lsd.bash-completion "$pkg_src_dir/share/bash-completion/completions/lsd" 2>/dev/null || true
mv ./lsd-*/autocomplete/lsd.fish "$pkg_src_dir/share/fish/vendor_completions.d/lsd.fish" 2>/dev/null || true
mv ./lsd-*/autocomplete/_lsd "$pkg_src_dir/share/zsh/site-functions/_lsd" 2>/dev/null || true
fi
# install man page if present
if test -f ./lsd-*/lsd.1; then
mkdir -p "$pkg_src_dir/share/man/man1"
mv ./lsd-*/lsd.1 "$pkg_src_dir/share/man/man1/lsd.1"
fi
}
# pkg_get_current_version is recommended, but (soon) not required

View File

@@ -26,6 +26,22 @@ __init_rg() {
# mv ./ripgrep-*/rg ~/.local/opt/rg-v12.1.1/bin/rg
mv ./ripgrep-*/rg "$pkg_src_cmd"
# install completions if present (complete/_rg, complete/rg.bash, complete/rg.fish)
if test -d ./ripgrep-*/complete; then
mkdir -p "$pkg_src_dir/share/bash-completion/completions"
mkdir -p "$pkg_src_dir/share/fish/vendor_completions.d"
mkdir -p "$pkg_src_dir/share/zsh/site-functions"
mv ./ripgrep-*/complete/rg.bash "$pkg_src_dir/share/bash-completion/completions/rg" 2>/dev/null || true
mv ./ripgrep-*/complete/rg.fish "$pkg_src_dir/share/fish/vendor_completions.d/rg.fish" 2>/dev/null || true
mv ./ripgrep-*/complete/_rg "$pkg_src_dir/share/zsh/site-functions/_rg" 2>/dev/null || true
fi
# install man page if present
if test -f ./ripgrep-*/doc/rg.1; then
mkdir -p "$pkg_src_dir/share/man/man1"
mv ./ripgrep-*/doc/rg.1 "$pkg_src_dir/share/man/man1/rg.1"
fi
if ! [ -e ~/.ripgreprc ]; then
touch ~/.ripgreprc
fi

View File

@@ -22,16 +22,28 @@ __init_sd() {
pkg_install() {
# mv ./sd-*/sd "$pkg_src_cmd"
if test -f sd-*; then
# ~/.local/opt/sd-v0.99.9/bin
# old format: bare binary named sd-{triplet}
mkdir -p "$(dirname "$pkg_src_cmd")"
mv sd-* "$pkg_src_cmd"
elif test -f sd-*/sd; then
# ~/.local/opt/sd-v0.99.9/bin
# current format: sd-v{ver}-{triplet}/ directory
mkdir -p "$(dirname "$pkg_src_cmd")"
mv sd-*/sd "$pkg_src_cmd"
# install completions if present (completions/{sd.bash,sd.fish,_sd})
if test -d sd-*/completions; then
mkdir -p "$pkg_src_dir/share/bash-completion/completions"
mkdir -p "$pkg_src_dir/share/fish/vendor_completions.d"
mkdir -p "$pkg_src_dir/share/zsh/site-functions"
mv sd-*/completions/sd.bash "$pkg_src_dir/share/bash-completion/completions/sd" 2>/dev/null || true
mv sd-*/completions/sd.fish "$pkg_src_dir/share/fish/vendor_completions.d/sd.fish" 2>/dev/null || true
mv sd-*/completions/_sd "$pkg_src_dir/share/zsh/site-functions/_sd" 2>/dev/null || true
fi
# install man page if present
if test -f sd-*/sd.1; then
mkdir -p "$pkg_src_dir/share/man/man1"
mv sd-*/sd.1 "$pkg_src_dir/share/man/man1"
mv sd-*/sd.1 "$pkg_src_dir/share/man/man1/sd.1"
fi
elif test -d sd-*/bin; then
mv sd-* "$pkg_src_dir"

View File

@@ -25,6 +25,22 @@ __init_watchexec() {
# mv ./watchexec-*/watchexec ~/.local/opt/watchexec-v0.99.9/bin/watchexec
mv ./watchexec-*/watchexec "$pkg_src_cmd"
# install completions if present (completions/{bash,fish,zsh})
if test -d ./watchexec-*/completions; then
mkdir -p "$pkg_src_dir/share/bash-completion/completions"
mkdir -p "$pkg_src_dir/share/fish/vendor_completions.d"
mkdir -p "$pkg_src_dir/share/zsh/site-functions"
mv ./watchexec-*/completions/bash "$pkg_src_dir/share/bash-completion/completions/watchexec" 2>/dev/null || true
mv ./watchexec-*/completions/fish "$pkg_src_dir/share/fish/vendor_completions.d/watchexec.fish" 2>/dev/null || true
mv ./watchexec-*/completions/zsh "$pkg_src_dir/share/zsh/site-functions/_watchexec" 2>/dev/null || true
fi
# install man page if present
if test -f ./watchexec-*/watchexec.1; then
mkdir -p "$pkg_src_dir/share/man/man1"
mv ./watchexec-*/watchexec.1 "$pkg_src_dir/share/man/man1/watchexec.1"
fi
}
# pkg_get_current_version is recommended, but (soon) not required

View File

@@ -25,6 +25,22 @@ __init_zoxide() {
# mv ./zoxide "~/.local/opt/zoxide-v0.99.9/bin/zoxide"
mv ./zoxide "$pkg_src_cmd"
# install completions if present
if test -d ./completions; then
mkdir -p "$pkg_src_dir/share/bash-completion/completions"
mkdir -p "$pkg_src_dir/share/fish/vendor_completions.d"
mkdir -p "$pkg_src_dir/share/zsh/site-functions"
mv ./completions/zoxide.bash "$pkg_src_dir/share/bash-completion/completions/zoxide" 2>/dev/null || true
mv ./completions/zoxide.fish "$pkg_src_dir/share/fish/vendor_completions.d/zoxide.fish" 2>/dev/null || true
mv ./completions/_zoxide "$pkg_src_dir/share/zsh/site-functions/_zoxide" 2>/dev/null || true
fi
# install man pages if present
if test -d ./man; then
mkdir -p "$pkg_src_dir/share"
mv ./man "$pkg_src_dir/share/man"
fi
}
# pkg_get_current_version is recommended, but (soon) not required