diff --git a/Library/Homebrew/completions/bash.erb b/Library/Homebrew/completions/bash.erb index 4f782557ac409..995658837af68 100644 --- a/Library/Homebrew/completions/bash.erb +++ b/Library/Homebrew/completions/bash.erb @@ -111,6 +111,7 @@ __brew_complete_commands() { local cur="${COMP_WORDS[COMP_CWORD]}" local cmds + local -a cmd_aliases if [[ -n ${__HOMEBREW_COMMANDS} ]] then @@ -122,6 +123,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} } @@ -131,6 +134,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[@]}" +} + <%= completion_functions.join("\n") %> _brew() {