# 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 }