| 
									
										
										
										
											2021-01-05 22:44:39 -05:00
										 |  |  | <% | 
					
						
							|  |  |  | # 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 man`. | 
					
						
							|  |  |  | %> | 
					
						
							|  |  |  | # Bash completion script for brew(1) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | __brewcomp_words_include() { | 
					
						
							|  |  |  |   local i=1 | 
					
						
							|  |  |  |   while [[ "$i" -lt "$COMP_CWORD" ]] | 
					
						
							|  |  |  |   do | 
					
						
							|  |  |  |     if [[ "${COMP_WORDS[i]}" = "$1" ]] | 
					
						
							|  |  |  |     then | 
					
						
							|  |  |  |       return 0 | 
					
						
							|  |  |  |     fi | 
					
						
							|  |  |  |     (( i++ )) | 
					
						
							|  |  |  |   done | 
					
						
							|  |  |  |   return 1 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Find the previous non-switch word | 
					
						
							|  |  |  | __brewcomp_prev() { | 
					
						
							|  |  |  |   local idx="$((COMP_CWORD - 1))" | 
					
						
							|  |  |  |   local prv="${COMP_WORDS[idx]}" | 
					
						
							|  |  |  |   while [[ "$prv" = -* ]] | 
					
						
							|  |  |  |   do | 
					
						
							|  |  |  |     (( idx-- )) | 
					
						
							|  |  |  |     prv="${COMP_WORDS[idx]}" | 
					
						
							|  |  |  |   done | 
					
						
							|  |  |  |   echo "$prv" | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | __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" && continue | 
					
						
							|  |  |  |     list="$list$s$sep" | 
					
						
							|  |  |  |   done | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   IFS="$sep" | 
					
						
							| 
									
										
										
										
											2021-04-11 14:10:35 +05:30
										 |  |  |   while read -r line; do COMPREPLY+=("$line"); done < <(compgen -W "$list" -- "$cur") | 
					
						
							| 
									
										
										
										
											2021-01-05 22:44:39 -05:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # 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]}" | 
					
						
							| 
									
										
										
										
											2021-04-11 14:10:35 +05:30
										 |  |  |   local formulae | 
					
						
							|  |  |  |   formulae="$(brew formulae)" | 
					
						
							|  |  |  |   while read -r line; do COMPREPLY+=("$line"); done < <(compgen -W "$formulae" -- "$cur") | 
					
						
							| 
									
										
										
										
											2021-01-05 22:44:39 -05:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | __brew_complete_casks() { | 
					
						
							|  |  |  |   local cur="${COMP_WORDS[COMP_CWORD]}" | 
					
						
							| 
									
										
										
										
											2021-04-11 14:10:35 +05:30
										 |  |  |   local casks | 
					
						
							|  |  |  |   casks="$(brew casks)" | 
					
						
							|  |  |  |   while read -r line; do COMPREPLY+=("$line"); done < <(compgen -W "$casks" -- "$cur") | 
					
						
							| 
									
										
										
										
											2021-01-05 22:44:39 -05:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | __brew_complete_installed_formulae() { | 
					
						
							|  |  |  |   local cur="${COMP_WORDS[COMP_CWORD]}" | 
					
						
							| 
									
										
										
										
											2021-04-11 14:10:35 +05:30
										 |  |  |   local installed_formulae | 
					
						
							|  |  |  |   installed_formulae="$(command ls "$(brew --cellar)" 2>/dev/null)" | 
					
						
							|  |  |  |   while read -r line; do COMPREPLY+=("$line"); done < <(compgen -W "$installed_formulae" -- "$cur") | 
					
						
							| 
									
										
										
										
											2021-01-05 22:44:39 -05:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | __brew_complete_installed_casks() { | 
					
						
							|  |  |  |   local cur="${COMP_WORDS[COMP_CWORD]}" | 
					
						
							| 
									
										
										
										
											2021-04-11 14:10:35 +05:30
										 |  |  |   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") | 
					
						
							| 
									
										
										
										
											2021-01-05 22:44:39 -05:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | __brew_complete_outdated_formulae() { | 
					
						
							|  |  |  |   local cur="${COMP_WORDS[COMP_CWORD]}" | 
					
						
							| 
									
										
										
										
											2021-04-11 14:10:35 +05:30
										 |  |  |   local outdated_formulae | 
					
						
							|  |  |  |   outdated_formulae="$(brew outdated --formula --quiet)" | 
					
						
							|  |  |  |   while read -r line; do COMPREPLY+=("$line"); done < <(compgen -W "$outdated_formulae" -- "$cur") | 
					
						
							| 
									
										
										
										
											2021-01-05 22:44:39 -05:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | __brew_complete_outdated_casks() { | 
					
						
							|  |  |  |   local cur="${COMP_WORDS[COMP_CWORD]}" | 
					
						
							| 
									
										
										
										
											2021-04-11 14:10:35 +05:30
										 |  |  |   local outdated_casks | 
					
						
							|  |  |  |   outdated_casks="$(brew outdated --cask --quiet)" | 
					
						
							|  |  |  |   while read -r line; do COMPREPLY+=("$line"); done < <(compgen -W "$outdated_casks" -- "$cur") | 
					
						
							| 
									
										
										
										
											2021-01-05 22:44:39 -05:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | __brew_complete_tapped() { | 
					
						
							| 
									
										
										
										
											2021-04-11 14:10:35 +05:30
										 |  |  |   local dir taps taplib | 
					
						
							|  |  |  |   taplib="$(brew --repository)/Library/Taps" | 
					
						
							| 
									
										
										
										
											2021-01-05 22:44:39 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  |   for dir in "$taplib"/*/* | 
					
						
							|  |  |  |   do | 
					
						
							|  |  |  |     [[ -d "$dir" ]] || continue | 
					
						
							|  |  |  |     dir="${dir#${taplib}/}" | 
					
						
							|  |  |  |     dir="${dir/homebrew-/}" | 
					
						
							|  |  |  |     taps="$taps $dir" | 
					
						
							|  |  |  |   done | 
					
						
							|  |  |  |   __brewcomp "$taps" | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | __brew_complete_commands() { | 
					
						
							|  |  |  |   local cur="${COMP_WORDS[COMP_CWORD]}" | 
					
						
							| 
									
										
										
										
											2021-04-11 14:10:35 +05:30
										 |  |  |   local cmds | 
					
						
							| 
									
										
										
										
											2021-01-05 22:44:39 -05:00
										 |  |  |   HOMEBREW_CACHE=$(brew --cache) | 
					
						
							|  |  |  |   HOMEBREW_REPOSITORY=$(brew --repo) | 
					
						
							|  |  |  |   # Do not auto-complete "*instal" or "*uninstal" aliases for "*install" commands. | 
					
						
							| 
									
										
										
										
											2021-04-11 14:10:35 +05:30
										 |  |  |   if [[ -f "$HOMEBREW_CACHE/all_commands_list.txt" ]] | 
					
						
							|  |  |  |   then | 
					
						
							|  |  |  |     cmds="$(< "$HOMEBREW_CACHE/all_commands_list.txt" \grep -v instal$)" | 
					
						
							|  |  |  |   else | 
					
						
							|  |  |  |     cmds="$(< "$HOMEBREW_REPOSITORY/completions/internal_commands_list.txt" \grep -v instal$)" | 
					
						
							|  |  |  |   fi | 
					
						
							|  |  |  |   while read -r line; do COMPREPLY+=("$line"); done < <(compgen -W "$cmds" -- "$cur") | 
					
						
							| 
									
										
										
										
											2021-01-05 22:44:39 -05:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-18 13:30:47 -05:00
										 |  |  | # compopt is only available in newer versions of bash | 
					
						
							|  |  |  | __brew_complete_files() { | 
					
						
							|  |  |  |   command -v compopt &> /dev/null && compopt -o default | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-01-05 22:44:39 -05:00
										 |  |  | <%= 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 |