X-Git-Url: https://arthur.barton.de/gitweb/?p=brew-completion.git;a=blobdiff_plain;f=brew-completion.sh;h=54fd003285209cfe3b7dac770aeab8a8e4676655;hp=f05a585809bc70c5775f4c2f87a17d80f5838641;hb=HEAD;hpb=6dd345f1b20f4b46747405748181e5cdfdc9aab7 diff --git a/brew-completion.sh b/brew-completion.sh index f05a585..54fd003 100644 --- a/brew-completion.sh +++ b/brew-completion.sh @@ -30,9 +30,25 @@ _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]} != -* ]]; then + 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 fi @@ -40,24 +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" @@ -66,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" @@ -84,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