From 41385efcab63a07f5bd611aea372db87f2d760fd Mon Sep 17 00:00:00 2001 From: Maxim Belkin Date: Tue, 31 Jan 2023 05:33:29 -0700 Subject: [PATCH] brew Bash completions: cache Homebrew commands --- completions/bash/brew | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/completions/bash/brew b/completions/bash/brew index 76ad9a2023..de47e2843b 100644 --- a/completions/bash/brew +++ b/completions/bash/brew @@ -100,18 +100,24 @@ __brew_complete_tapped() { } __brew_complete_commands() { + # Auto-complete Homebrew commands + # Do NOT auto-complete "*instal" aliases for "*install" commands + local cur="${COMP_WORDS[COMP_CWORD]}" local cmds - HOMEBREW_CACHE=$(brew --cache) - HOMEBREW_REPOSITORY=$(brew --repo) - # Do not auto-complete "*instal" or "*uninstal" aliases for "*install" commands. - if [[ -f "${HOMEBREW_CACHE}/all_commands_list.txt" ]] + + 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" \grep -v instal$)" - else + elif [[ -n ${HOMEBREW_REPOSITORY:-} && -f ${HOMEBREW_REPOSITORY}/completions/internal_commands_list.txt ]] + then cmds="$(< "${HOMEBREW_REPOSITORY}/completions/internal_commands_list.txt" \grep -v instal$)" 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