Jamin Thornsberry c5253b23c2 Remove fish command completions for excluded commands
This removes fish command completions (but keeps argument completions)
for commands in the `COMPLETIONS_EXCLUSION_LIST` list.

It also removes unnecessary exclusions of `*instal` aliases in command
suggestions in bash and fish completions, since those were removed from
`internal_commands_list.txt` in Homebrew#10229. This makes
`COMPLETIONS_EXCLUSION_LIST` the single source of truth for commands to
exclude from completions.
2024-11-20 17:35:42 -06:00

177 lines
5.0 KiB
Plaintext

<%
# To make changes to the completions:
#
# - For changes to a command under `COMMANDS` or `DEVELOPER COMMANDS` sections):
# - Find the source file in `Library/Homebrew/[dev-]cmd/<command>.{rb,sh}`.
# - For `.rb` files, edit the `<command>_args` method.
# - For `.sh` files, edit the top comment, being sure to use the line prefix
# `#:` for the comments to be recognized as documentation. If in doubt,
# compare with already documented commands.
# - For other changes: Edit this file.
#
# When done, regenerate the completions by running `brew generate-man-completions`.
%>
# Bash completion script for brew(1)
# This file is automatically generated by running `brew generate-man-completions`.
# See Library/Homebrew/completions/bash.erb for editing instructions.
if [[ -n ${POSIXLY_CORRECT:-} ]] || shopt -oq posix
then
echo "Homebrew Bash completions do not work in POSIX mode" 1>&2
return
fi
__brewcomp_words_include() {
local element idx
for (( idx = 1; idx < COMP_CWORD; idx++ ))
do
element=${COMP_WORDS[idx]}
[[ -n ${element} && ${element} == "$1" ]] && return 0
done
return 1
}
__brewcomp() {
# break $1 on space, tab, and newline characters,
# and turn it into a newline separated list of words
local list s sep=$'\n' IFS=$' \t\n'
local cur=${COMP_WORDS[COMP_CWORD]}
for s in $1
do
__brewcomp_words_include "${s}" || list+="${s}${sep}"
done
list=${list%"${sep}"}
IFS="${sep}"
while read -r line; do COMPREPLY+=("${line}"); done < <(compgen -W "${list}" -- "${cur}")
}
# Don't use __brewcomp() in any of the __brew_complete_foo functions, as
# it is too slow and is not worth it just for duplicate elimination.
__brew_complete_formulae() {
local cur="${COMP_WORDS[COMP_CWORD]}"
local formulae
formulae="$(brew formulae)"
while read -r line; do COMPREPLY+=("${line}"); done < <(compgen -W "${formulae}" -- "${cur}")
}
__brew_complete_casks() {
local cur="${COMP_WORDS[COMP_CWORD]}"
local casks
casks="$(brew casks)"
while read -r line; do COMPREPLY+=("${line}"); done < <(compgen -W "${casks}" -- "${cur}")
}
__brew_complete_installed_formulae() {
local cur="${COMP_WORDS[COMP_CWORD]}"
local installed_formulae
installed_formulae="$(command ls "${HOMEBREW_CELLAR:-$(brew --cellar)}" 2>/dev/null)"
while read -r line; do COMPREPLY+=("${line}"); done < <(compgen -W "${installed_formulae}" -- "${cur}")
}
__brew_complete_installed_casks() {
local cur="${COMP_WORDS[COMP_CWORD]}"
local installed_casks
installed_casks="$(command ls "$(brew --caskroom)" 2>/dev/null)"
while read -r line; do COMPREPLY+=("${line}"); done < <(compgen -W "${installed_casks}" -- "${cur}")
}
__brew_complete_outdated_formulae() {
local cur="${COMP_WORDS[COMP_CWORD]}"
local outdated_formulae
outdated_formulae="$(HOMEBREW_NO_AUTO_UPDATE=1 brew outdated --formula --quiet)"
while read -r line; do COMPREPLY+=("${line}"); done < <(compgen -W "${outdated_formulae}" -- "${cur}")
}
__brew_complete_outdated_casks() {
local cur="${COMP_WORDS[COMP_CWORD]}"
local outdated_casks
outdated_casks="$(HOMEBREW_NO_AUTO_UPDATE=1 brew outdated --cask --quiet 2>/dev/null)"
while read -r line; do COMPREPLY+=("${line}"); done < <(compgen -W "${outdated_casks}" -- "${cur}")
}
__brew_complete_tapped() {
local dir taps taplib
taplib=${HOMEBREW_REPOSITORY:-$(brew --repository)}/Library/Taps
for dir in "${taplib}"/*/*
do
[[ -d ${dir} ]] || continue
dir=${dir#"${taplib}"/}
dir=${dir/homebrew-/}
taps+=" ${dir}"
done
__brewcomp "${taps}"
}
__brew_complete_commands() {
# Auto-complete Homebrew commands
local cur="${COMP_WORDS[COMP_CWORD]}"
local cmds
if [[ -n ${__HOMEBREW_COMMANDS} ]]
then
cmds=${__HOMEBREW_COMMANDS}
elif [[ -n ${HOMEBREW_CACHE:-} && -f ${HOMEBREW_CACHE}/all_commands_list.txt ]]
then
cmds="$(< "${HOMEBREW_CACHE}/all_commands_list.txt")"
elif [[ -n ${HOMEBREW_REPOSITORY:-} && -f ${HOMEBREW_REPOSITORY}/completions/internal_commands_list.txt ]]
then
cmds="$(< "${HOMEBREW_REPOSITORY}/completions/internal_commands_list.txt")"
fi
while read -r line; do COMPREPLY+=("${line}"); done < <(compgen -W "${cmds}" -- "${cur}")
export __HOMEBREW_COMMANDS=${cmds}
}
# compopt is only available in newer versions of bash
__brew_complete_files() {
command -v compopt &> /dev/null && compopt -o default
}
<%= completion_functions.join("\n") %>
_brew() {
local i=1 cmd
# find the subcommand
while [[ "${i}" -lt "${COMP_CWORD}" ]]
do
local s="${COMP_WORDS[i]}"
case "${s}" in
--*)
cmd="${s}"
break
;;
-*)
;;
*)
cmd="${s}"
break
;;
esac
(( i++ ))
done
if [[ "${i}" -eq "${COMP_CWORD}" ]]
then
__brew_complete_commands
return
fi
# subcommands have their own completion functions
case "${cmd}" in
<%= function_mappings.join("\n ").concat("\n") %>
*) ;;
esac
}
# keep around for compatibility
_brew_to_completion() {
_brew
}
complete -o bashdefault -o default -F _brew brew