summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--plugins/brew-cask/brew-cask.plugin.zsh84
1 files changed, 84 insertions, 0 deletions
diff --git a/plugins/brew-cask/brew-cask.plugin.zsh b/plugins/brew-cask/brew-cask.plugin.zsh
new file mode 100644
index 000000000..91ce0f498
--- /dev/null
+++ b/plugins/brew-cask/brew-cask.plugin.zsh
@@ -0,0 +1,84 @@
+# Autocompletion for homebrew-cask.
+#
+# This script intercepts calls to the brew plugin and adds autocompletion
+# for the cask subcommand.
+#
+# Author: https://github.com/pstadler
+
+compdef _brew-cask brew
+
+_brew-cask()
+{
+ local curcontext="$curcontext" state line
+ typeset -A opt_args
+
+ _arguments -C \
+ ':command:->command' \
+ ':subcmd:->subcmd' \
+ '*::options:->options'
+
+ case $state in
+ (command)
+ __call_original_brew
+ cask_commands=(
+ 'cask:manage casks'
+ )
+ _describe -t commands 'brew cask command' cask_commands ;;
+
+ (subcmd)
+ case "$line[1]" in
+ cask)
+ if (( CURRENT == 3 )); then
+ local -a subcommands
+ subcommands=(
+ "alfred:used to modify Alfred's scope to include the Caskroom"
+ 'audit:verifies installability of casks'
+ 'checklinks:checks for bad cask links'
+ 'cleanup:cleans up cached downloads'
+ 'create:creates a cask of the given name and opens it in an editor'
+ 'doctor:checks for configuration issues'
+ 'edit:edits the cask of the given name'
+ 'fetch:downloads Cask resources to local cache'
+ 'home:opens the homepage of the cask of the given name'
+ 'info:displays information about the cask of the given name'
+ 'install:installs the cask of the given name'
+ 'list:with no args, lists installed casks; given installed casks, lists installed files'
+ 'search:searches all known casks'
+ 'uninstall:uninstalls the cask of the given name'
+ "update:a synonym for 'brew update'"
+ )
+ _describe -t commands "brew cask subcommand" subcommands
+ fi ;;
+
+ *)
+ __call_original_brew ;;
+ esac ;;
+
+ (options)
+ local -a casks installed_casks
+ local expl
+ case "$line[2]" in
+ list|uninstall)
+ __brew_installed_casks
+ _wanted installed_casks expl 'installed casks' compadd -a installed_casks ;;
+ audit|edit|home|info|install)
+ __brew_all_casks
+ _wanted casks expl 'all casks' compadd -a casks ;;
+ esac ;;
+ esac
+}
+
+__brew_all_casks() {
+ casks=(`brew cask search`)
+}
+
+__brew_installed_casks() {
+ installed_casks=(`brew cask list`)
+}
+
+__call_original_brew()
+{
+ local ret=1
+ _call_function ret _brew
+ compdef _brew-cask brew
+}