X-Git-Url: https://arthur.barton.de/gitweb/?p=brew-completion.git;a=blobdiff_plain;f=brew-completion.sh;h=54fd003285209cfe3b7dac770aeab8a8e4676655;hp=0934cff9aea01cb43b15c7b132de9eb10fb66b13;hb=HEAD;hpb=cb3eec15b3a8c7448497dde44f31ca53583b8fc3 diff --git a/brew-completion.sh b/brew-completion.sh index 0934cff..54fd003 100644 --- a/brew-completion.sh +++ b/brew-completion.sh @@ -30,11 +30,24 @@ _brew() prev=${COMP_WORDS[COMP_CWORD-1]} cmd="" + # Get list of all available external commands + extcmdpath="`brew --prefix`/Library/Homebrew/cmd"; + if [ -d "$extcmdpath" ]; then + EXTCMD="$EXTCMD `cd "$extcmdpath"; ls -1 -- *.rb 2>/dev/null \ + | cut -d'.' -f1`" + fi + examplespath="`brew --prefix`/Library/Contributions/examples" + if [ -d "$examplespath" ]; then + EXTCMD="$EXTCMD `cd "$examplespath"; ls -1 -- brew-* 2>/dev/null \ + | cut -d'.' -f1 | cut -d'-' -f2- | sed -e 's/\*//g'`" + fi + declare -i i=$COMP_CWORD-1 while [ $i -gt 0 ]; do if [[ ${COMP_WORDS[i]} != -* \ || ${COMP_WORDS[i]} == "--cache" \ || ${COMP_WORDS[i]} == "--cellar" \ + || ${COMP_WORDS[i]} == "--config" \ || ${COMP_WORDS[i]} == "--prefix" ]]; then cmd=${COMP_WORDS[i]} break @@ -43,25 +56,25 @@ _brew() done case "$cmd" in - "cleanup"|"edit"|"home"|"log"|"prune" \ + "cat"|"cleanup"|"deps"|"edit"|"home"|"log"|"prune"|"uses" \ |"--cache"|"--cellar"|"--prefix") _brew_formula "$cur" return 0 ;; - "link"|"remove"|"uninstall"|"unlink") + "link"|"remove"|"rm"|"uninstall"|"unlink") _brew_formula_installed "$cur" return 0 ;; "create") if [[ "$cur" == -* ]]; then - COMPREPLY=( $(compgen -W '--macports' \ - -- "$cur") ) + COMPREPLY=( $(compgen -W '--macports --fink \ + --cache' -- "$cur") ) fi return 0 ;; "info") if [[ "$cur" == -* ]]; then - COMPREPLY=( $(compgen -W '--github' \ + COMPREPLY=( $(compgen -W '--all --github' \ -- "$cur") ) else _brew_formula "$cur" @@ -70,9 +83,10 @@ _brew() ;; "install") if [[ "$cur" == -* ]]; then - COMPREPLY=( $(compgen -W '--HEAD -H \ - --debug -d --interactive -i - --verbose -v --ignore-dependencies' \ + COMPREPLY=( $(compgen -W '--git --HEAD -H \ + --debug -d --force -f \ + --interactive -i --verbose -v \ + --ignore-dependencies --use-llvm' \ -- "$cur") ) else _brew_formula "$cur" @@ -88,18 +102,25 @@ _brew() fi return 0 ;; - "search"|"update") - return 0 - ;; + *) + for c in $EXTCMD; do + if [ "$cmd" = "$c" ]; then + _brew_formula "$cur" + return 0 + fi + done esac if [[ "$cur" == -* ]]; then - COMPREPLY=( $(compgen -W '--cache --cellar --help --prefix \ - --version -v -H' -- "$cur") ) + COMPREPLY=( $(compgen -W '--cache --cellar --config \ + --env --help --prefix --version -v -H' \ + -- "$cur") ) elif [ "$cmd" = "" ]; then - COMPREPLY=( $(compgen -W 'cleanup create edit home info \ - install link list log outdated prune remove search \ - uninstall unlink update' -- "$cur") ) + COMPREPLY=( $(compgen -W 'cat cleanup create deps doctor \ + edit home info install link list log outdated prune \ + remove rm search uninstall unlink up update uses \ + $EXTCMD' \ + -- "$cur") ) fi } complete -F _brew brew