aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorxyb2018-01-09 02:40:06 -0500
committerAndrew Janke2018-01-09 09:00:11 -0500
commitf5c68a6fe3ede2d83aaa331853a1ff6f0edeffb9 (patch)
tree9122f17e863bdb79d72dfe28512cc1ff9b2d7dee
parent9ed1ed3c0577a20b0144cb83501838b2b8c681ae (diff)
downloadbrew-f5c68a6fe3ede2d83aaa331853a1ff6f0edeffb9.tar.bz2
Pull in "brew cask" completions from xyb.
-rw-r--r--completions/bash/brew-cask182
1 files changed, 182 insertions, 0 deletions
diff --git a/completions/bash/brew-cask b/completions/bash/brew-cask
new file mode 100644
index 000000000..369f0dc74
--- /dev/null
+++ b/completions/bash/brew-cask
@@ -0,0 +1,182 @@
+# Bash completion script for brew-cask(1)
+
+__brew_caskcomp_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
+}
+
+# Find the previous non-switch word
+__brew_caskcomp_prev ()
+{
+ local idx=$((COMP_CWORD - 1))
+ local prv="${COMP_WORDS[idx]}"
+ while [[ $prv == -* ]]; do
+ idx=$((--idx))
+ prv="${COMP_WORDS[idx]}"
+ done
+ echo "$prv"
+}
+
+__brew_caskcomp ()
+{
+ # 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
+ __brew_caskcomp_words_include "$s" && continue
+ list="$list$s$sep"
+ done
+
+ IFS=$sep
+ COMPREPLY=($(compgen -W "$list" -- "$cur"))
+}
+
+# Don't use __brew_caskcomp() in any of the __brew_cask_complete_foo functions, as
+# it is too slow and is not worth it just for duplicate elimination.
+__brew_cask_complete_formulae ()
+{
+ local cur="${COMP_WORDS[COMP_CWORD]}"
+ local lib=$(brew --repository)/Library
+ local taps=${lib}/Taps
+ local casks=${lib}/Taps/caskroom/homebrew-cask/Casks
+ local ff=$(\ls ${casks} 2>/dev/null | sed 's/\.rb//g')
+
+ COMPREPLY=($(compgen -W "$ff" -- "$cur"))
+}
+
+__brew_cask_complete_installed ()
+{
+ local cur="${COMP_WORDS[COMP_CWORD]}"
+ local inst=$(brew-cask list -1)
+ COMPREPLY=($(compgen -W "$inst" -- "$cur"))
+}
+
+__brew_cask_complete_caskroom ()
+{
+ local cur="${COMP_WORDS[COMP_CWORD]}"
+ local caskroom_dir=/opt/homebrew-cask/Caskroom/
+ local files=$(\ls ${caskroom_dir} 2>/dev/null)
+ COMPREPLY=($(compgen -W "$files" -- "$cur"))
+}
+
+_brew_cask_cleanup ()
+{
+ local cur="${COMP_WORDS[COMP_CWORD]}"
+ case "$cur" in
+ -*)
+ __brew_caskcomp "--force"
+ return
+ ;;
+ esac
+ __brew_cask_complete_installed
+}
+
+_brew_cask_fetch ()
+{
+ local cur="${COMP_WORDS[COMP_CWORD]}"
+ local prv=$(__brew_caskcomp_prev)
+ case "$cur" in
+ -*)
+ __brew_caskcomp "--force"
+ return
+ ;;
+ esac
+ __brew_cask_complete_formulae
+}
+
+_brew_cask_list ()
+{
+ local cur="${COMP_WORDS[COMP_CWORD]}"
+
+ case "$cur" in
+ -*)
+ __brew_caskcomp "-1 -l --versions"
+ return
+ ;;
+ esac
+
+ __brew_cask_complete_installed
+}
+
+_brew_cask_uninstall ()
+{
+ local cur="${COMP_WORDS[COMP_CWORD]}"
+ case "$cur" in
+ -*)
+ __brew_caskcomp "--force"
+ return
+ ;;
+ esac
+ __brew_cask_complete_installed
+}
+
+_brew_cask_update ()
+{
+ local cur="${COMP_WORDS[COMP_CWORD]}"
+ case "$cur" in
+ -*)
+ __brew_caskcomp "--rebase --verbose"
+ return
+ ;;
+ esac
+}
+
+_brew_cask ()
+{
+ 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
+
+ if [[ $i -eq $COMP_CWORD ]]; then
+ __brew_caskcomp "abv alfred audit cat cleanup create doctor edit fetch home info install list ls remove rm search uninstall update zap -S --force --caskroom --verbose --appdir --colorpickerdir --prefpanedir --qlplugindir --fontdir --servicedir --input_methoddir --internet_plugindir --screen_saverdir --no-binaries --binarydir --debug"
+ return
+ fi
+
+ # subcommands have their own completion functions
+ case "$cmd" in
+ audit) __brew_cask_complete_formulae ;;
+ cat|edit|home) __brew_cask_complete_formulae ;;
+ cleanup) _brew_cask_cleanup ;;
+ fetch) _brew_cask_fetch ;;
+ info|abv) __brew_cask_complete_formulae ;;
+ install|instal) __brew_cask_complete_formulae ;;
+ list|ls) _brew_cask_list ;;
+ uninstall|remove|rm) _brew_cask_uninstall ;;
+ update) _brew_cask_update ;;
+ zap) __brew_cask_complete_caskroom ;;
+ *) ;;
+ esac
+}
+
+# keep around for compatibility
+_brew_cask_to_completion ()
+{
+ _brew_cask
+}
+
+complete -o bashdefault -o default -F _brew_cask brew-cask