Appease the masses

Signed-off-by: Jack Nagel <jacknagel@gmail.com>
This commit is contained in:
Jack Nagel 2012-03-16 19:09:24 -05:00
parent ab01c1e357
commit ee0041f290

View File

@ -37,403 +37,405 @@
__brewcomp_words_include ()
{
local i=1
while [[ $i -lt $COMP_CWORD ]]; do
if [[ "${COMP_WORDS[i]}" = "$1" ]]; then
return 0
fi
i=$((++i))
done
return 1
local i=1
while [[ $i -lt $COMP_CWORD ]]; do
if [[ "${COMP_WORDS[i]}" = "$1" ]]; then
return 0
fi
i=$((++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=$((--idx))
prv="${COMP_WORDS[idx]}"
done
echo "$prv"
local idx=$((COMP_CWORD - 1))
local prv="${COMP_WORDS[idx]}"
while [[ $prv == -* ]]; do
idx=$((--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]}"
# 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
for s in $1; do
__brewcomp_words_include "$s" && continue
list="$list$s$sep"
done
IFS=$sep
COMPREPLY=($(compgen -W "$list" -- "$cur"))
IFS=$sep
COMPREPLY=($(compgen -W "$list" -- "$cur"))
}
# 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]}"
local ff=$(\ls $(brew --repository)/Library/Formula 2>/dev/null | sed 's/\.rb//g')
local af=$(\ls $(brew --repository)/Library/Aliases 2>/dev/null | sed 's/\.rb//g')
COMPREPLY=($(compgen -W "$ff $af" -- "$cur"))
local cur="${COMP_WORDS[COMP_CWORD]}"
local ff=$(\ls $(brew --repository)/Library/Formula 2>/dev/null | sed 's/\.rb//g')
local af=$(\ls $(brew --repository)/Library/Aliases 2>/dev/null | sed 's/\.rb//g')
COMPREPLY=($(compgen -W "$ff $af" -- "$cur"))
}
__brew_complete_installed ()
{
local cur="${COMP_WORDS[COMP_CWORD]}"
local inst=$(\ls $(brew --cellar))
COMPREPLY=($(compgen -W "$inst" -- "$cur"))
local cur="${COMP_WORDS[COMP_CWORD]}"
local inst=$(\ls $(brew --cellar))
COMPREPLY=($(compgen -W "$inst" -- "$cur"))
}
__brew_complete_outdated ()
{
local cur="${COMP_WORDS[COMP_CWORD]}"
local od=$(brew outdated --quiet)
COMPREPLY=($(compgen -W "$od" -- "$cur"))
local cur="${COMP_WORDS[COMP_CWORD]}"
local od=$(brew outdated --quiet)
COMPREPLY=($(compgen -W "$od" -- "$cur"))
}
__brew_complete_taps ()
{
__brewcomp "$(\ls $(brew --repository)/Library/Taps 2>/dev/null | sed 's/-/\//g')"
__brewcomp "$(\ls $(brew --repository)/Library/Taps 2>/dev/null | sed 's/-/\//g')"
}
_brew_cleanup ()
{
local cur="${COMP_WORDS[COMP_CWORD]}"
case "$cur" in
--*)
__brewcomp "--force"
return
;;
esac
__brew_complete_installed
local cur="${COMP_WORDS[COMP_CWORD]}"
case "$cur" in
--*)
__brewcomp "--force"
return
;;
esac
__brew_complete_installed
}
_brew_create ()
{
local cur="${COMP_WORDS[COMP_CWORD]}"
case "$cur" in
--*)
__brewcomp "--autotools --cmake --no-fetch"
return
;;
esac
local cur="${COMP_WORDS[COMP_CWORD]}"
case "$cur" in
--*)
__brewcomp "--autotools --cmake --no-fetch"
return
;;
esac
}
_brew_deps ()
{
local cur="${COMP_WORDS[COMP_CWORD]}"
case "$cur" in
--*)
__brewcomp "--1 --all --tree"
return
;;
esac
__brew_complete_formulae
local cur="${COMP_WORDS[COMP_CWORD]}"
case "$cur" in
--*)
__brewcomp "--1 --all --tree"
return
;;
esac
__brew_complete_formulae
}
_brew_diy ()
{
local cur="${COMP_WORDS[COMP_CWORD]}"
case "$cur" in
--*)
__brewcomp "--set-name --set-version"
return
;;
esac
local cur="${COMP_WORDS[COMP_CWORD]}"
case "$cur" in
--*)
__brewcomp "--set-name --set-version"
return
;;
esac
}
_brew_fetch ()
{
local cur="${COMP_WORDS[COMP_CWORD]}"
case "$cur" in
--*)
__brewcomp "--deps --force --HEAD"
return
;;
esac
__brew_complete_formulae
local cur="${COMP_WORDS[COMP_CWORD]}"
case "$cur" in
--*)
__brewcomp "--deps --force --HEAD"
return
;;
esac
__brew_complete_formulae
}
_brew_info ()
{
local cur="${COMP_WORDS[COMP_CWORD]}"
case "$cur" in
--*)
__brewcomp "--all --github"
return
;;
esac
__brew_complete_formulae
local cur="${COMP_WORDS[COMP_CWORD]}"
case "$cur" in
--*)
__brewcomp "--all --github"
return
;;
esac
__brew_complete_formulae
}
_brew_install ()
{
local cur="${COMP_WORDS[COMP_CWORD]}"
local prv=$(__brewcomp_prev)
local cur="${COMP_WORDS[COMP_CWORD]}"
local prv=$(__brewcomp_prev)
case "$cur" in
--*)
if __brewcomp_words_include "--interactive"; then
__brewcomp "
--devel
--force
--git
--HEAD
--use-clang
--use-gcc
--use-llvm
"
else
__brewcomp "
--build-from-source
--debug
--devel
--force
--fresh
--HEAD
--ignore-dependencies
--interactive
--use-clang
--use-gcc
--use-llvm
--verbose
$(brew options --compact "$prv")
"
fi
return
;;
esac
__brew_complete_formulae
case "$cur" in
--*)
if __brewcomp_words_include "--interactive"; then
__brewcomp "
--devel
--force
--git
--HEAD
--use-clang
--use-gcc
--use-llvm
"
else
__brewcomp "
--build-from-source
--debug
--devel
--force
--fresh
--HEAD
--ignore-dependencies
--interactive
--use-clang
--use-gcc
--use-llvm
--verbose
$(brew options --compact "$prv")
"
fi
return
;;
esac
__brew_complete_formulae
}
_brew_list ()
{
local cur="${COMP_WORDS[COMP_CWORD]}"
case "$cur" in
--*)
# options to brew-list are mutually exclusive
if __brewcomp_words_include "--unbrewed"; then
return
elif __brewcomp_words_include "--verbose"; then
return
elif __brewcomp_words_include "--versions"; then
return
else
__brewcomp "--unbrewed --verbose --versions"
return
fi
;;
esac
__brew_complete_installed
local cur="${COMP_WORDS[COMP_CWORD]}"
case "$cur" in
--*)
# options to brew-list are mutually exclusive
if __brewcomp_words_include "--unbrewed"; then
return
elif __brewcomp_words_include "--verbose"; then
return
elif __brewcomp_words_include "--versions"; then
return
else
__brewcomp "--unbrewed --verbose --versions"
return
fi
;;
esac
__brew_complete_installed
}
_brew_log ()
{
# if git-completion is loaded, then we complete git-log options
declare -F _git_log >/dev/null || return
local cur="${COMP_WORDS[COMP_CWORD]}"
case "$cur" in
--*)
__brewcomp "
$__git_log_common_options
$__git_log_shortlog_options
$__git_log_gitk_options
$__git_diff_common_options
--walk-reflogs --graph --decorate
--abbrev-commit --oneline --reverse
"
return
;;
esac
__brew_complete_formulae
# if git-completion is loaded, then we complete git-log options
declare -F _git_log >/dev/null || return
local cur="${COMP_WORDS[COMP_CWORD]}"
case "$cur" in
--*)
__brewcomp "
$__git_log_common_options
$__git_log_shortlog_options
$__git_log_gitk_options
$__git_diff_common_options
--walk-reflogs --graph --decorate
--abbrev-commit --oneline --reverse
"
return
;;
esac
__brew_complete_formulae
}
_brew_options ()
{
local cur="${COMP_WORDS[COMP_CWORD]}"
case "$cur" in
--*)
__brewcomp "--all --compact --installed"
return
;;
esac
__brew_complete_formulae
local cur="${COMP_WORDS[COMP_CWORD]}"
case "$cur" in
--*)
__brewcomp "--all --compact --installed"
return
;;
esac
__brew_complete_formulae
}
_brew_outdated ()
{
local cur="${COMP_WORDS[COMP_CWORD]}"
case "$cur" in
--*)
__brewcomp "--quiet"
return
;;
esac
local cur="${COMP_WORDS[COMP_CWORD]}"
case "$cur" in
--*)
__brewcomp "--quiet"
return
;;
esac
}
_brew_search ()
{
local cur="${COMP_WORDS[COMP_CWORD]}"
case "$cur" in
--*)
__brewcomp "--fink --macports"
return
;;
esac
local cur="${COMP_WORDS[COMP_CWORD]}"
case "$cur" in
--*)
__brewcomp "--fink --macports"
return
;;
esac
}
_brew_uninstall ()
{
local cur="${COMP_WORDS[COMP_CWORD]}"
case "$cur" in
--*)
__brewcomp "--force"
return
;;
esac
__brew_complete_installed
local cur="${COMP_WORDS[COMP_CWORD]}"
case "$cur" in
--*)
__brewcomp "--force"
return
;;
esac
__brew_complete_installed
}
_brew_update ()
{
local cur="${COMP_WORDS[COMP_CWORD]}"
case "$cur" in
--*)
__brewcomp "--rebase --verbose"
return
;;
esac
local cur="${COMP_WORDS[COMP_CWORD]}"
case "$cur" in
--*)
__brewcomp "--rebase --verbose"
return
;;
esac
}
_brew_uses ()
{
local cur="${COMP_WORDS[COMP_CWORD]}"
case "$cur" in
--*)
__brewcomp "--installed"
return
;;
esac
__brew_complete_formulae
local cur="${COMP_WORDS[COMP_CWORD]}"
case "$cur" in
--*)
__brewcomp "--installed"
return
;;
esac
__brew_complete_formulae
}
_brew_versions ()
{
local cur="${COMP_WORDS[COMP_CWORD]}"
case "$cur" in
--*)
__brewcomp "--compact"
return
;;
esac
__brew_complete_formulae
local cur="${COMP_WORDS[COMP_CWORD]}"
case "$cur" in
--*)
__brewcomp "--compact"
return
;;
esac
__brew_complete_formulae
}
__brew_ps1 ()
{
[[ -n $HOMEBREW_DEBUG_INSTALL ]] &&
printf "${1:- (%s)}" "$HOMEBREW_DEBUG_INSTALL|DEBUG"
[[ -n $HOMEBREW_DEBUG_INSTALL ]] &&
printf "${1:- (%s)}" "$HOMEBREW_DEBUG_INSTALL|DEBUG"
}
_brew ()
{
local i=1 cmd
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=$((++i))
done
# 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=$((++i))
done
if [[ $i -eq $COMP_CWORD ]]; then
local ext=$(\ls $(brew --repository)/Library/Contributions/examples \
2>/dev/null | sed -e "s/\.rb//g" -e "s/brew-//g")
__brewcomp "
--cache --cellar --config
--env --prefix --repository
audit
cat
cleanup
create
deps
diy configure
doctor
edit
fetch
help
home
info abv
install
link ln
list ls
log
options
outdated
prune
search
tap
test
uninstall remove rm
unlink
untap
update
upgrade
uses
versions
$ext
"
return
fi
if [[ $i -eq $COMP_CWORD ]]; then
local ext=$(\ls $(brew --repository)/Library/Contributions/examples \
2>/dev/null | sed -e "s/\.rb//g" -e "s/brew-//g")
__brewcomp "
--cache --cellar --config
--env --prefix --repository
audit
cat
cleanup
create
deps
diy configure
doctor
edit
fetch
help
home
info abv
install
link ln
list ls
log
options
outdated
prune
search
tap
test
uninstall remove rm
unlink
untap
update
upgrade
uses
versions
$ext
"
return
fi
# subcommands have their own completion functions
case "$cmd" in
--cache|--cellar|--prefix)
__brew_complete_formulae ;;
audit|cat|edit|home) __brew_complete_formulae ;;
link|ln|test|unlink) __brew_complete_installed ;;
upgrade) __brew_complete_outdated ;;
cleanup) _brew_cleanup ;;
create) _brew_create ;;
deps) _brew_deps ;;
diy|configure) _brew_diy ;;
fetch) _brew_fetch ;;
info|abv) _brew_info ;;
install) _brew_install ;;
list|ls) _brew_list ;;
log) _brew_log ;;
options) _brew_options ;;
outdated) _brew_outdated ;;
search|-S) _brew_search ;;
uninstall|remove|rm) _brew_uninstall ;;
untap) __brew_complete_taps ;;
update) _brew_update ;;
uses) _brew_uses ;;
versions) _brew_versions ;;
*) ;;
esac
# subcommands have their own completion functions
case "$cmd" in
--cache|--cellar|--prefix) __brew_complete_formulae ;;
audit|cat|edit|home) __brew_complete_formulae ;;
link|ln|test|unlink) __brew_complete_installed ;;
upgrade) __brew_complete_outdated ;;
cleanup) _brew_cleanup ;;
create) _brew_create ;;
deps) _brew_deps ;;
diy|configure) _brew_diy ;;
fetch) _brew_fetch ;;
info|abv) _brew_info ;;
install) _brew_install ;;
list|ls) _brew_list ;;
log) _brew_log ;;
options) _brew_options ;;
outdated) _brew_outdated ;;
search|-S) _brew_search ;;
uninstall|remove|rm) _brew_uninstall ;;
untap) __brew_complete_taps ;;
update) _brew_update ;;
uses) _brew_uses ;;
versions) _brew_versions ;;
*) ;;
esac
}
# keep around for compatibility
_brew_to_completion ()
{
_brew
_brew
}
complete -o bashdefault -o default -F _brew brew