diff --git a/completions/bash/brew b/completions/bash/brew index 1f46df99adb70..523fde78b8680 100644 --- a/completions/bash/brew +++ b/completions/bash/brew @@ -98,6 +98,7 @@ __brew_complete_commands() { local cur="${COMP_WORDS[COMP_CWORD]}" local cmds + local -a cmd_aliases if [[ -n ${__HOMEBREW_COMMANDS} ]] then @@ -109,6 +110,8 @@ __brew_complete_commands() { then cmds="$(< "${HOMEBREW_REPOSITORY}/completions/internal_commands_list.txt")" fi + while read -r alias; do cmd_aliases+=("${alias}"); done < <(compgen -W "$(__brew_list_aliases)") + [[ -n ${cmd_aliases[*]+"${cmd_aliases[*]}"} ]] && cmds+=" ${cmd_aliases[*]} alias unalias" while read -r line; do COMPREPLY+=("${line}"); done < <(compgen -W "${cmds}" -- "${cur}") export __HOMEBREW_COMMANDS=${cmds} } @@ -118,6 +121,26 @@ __brew_complete_files() { command -v compopt &> /dev/null && compopt -o default } +# https://github.com/Homebrew/homebrew-aliases +__brew_list_aliases() { + local aliases_dir="${HOME}/.brew-aliases" + local pattern="^# alias: brew ([[:alnum:]-]+)$" + local -a aliases + + [[ ! -d ${aliases_dir} ]] && return + + for file in "${aliases_dir}"/*; do + [[ ! -f ${file} ]] && continue + while read -r line; do + if [[ ${line} =~ ${pattern} ]]; then + aliases+=("${BASH_REMATCH[1]}") + break + fi + done < "${file}" + done + [[ -n ${aliases[*]+"${aliases[*]}"} ]] && echo "${aliases[@]}" +} + _brew___cache() { local cur="${COMP_WORDS[COMP_CWORD]}" case "${cur}" in