Created
January 1, 2014 16:50
-
-
Save pstadler/8209487 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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' | |
'create:creates a cask of the given name and opens it in an editor' | |
'edit:edits the cask of the given name' | |
'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' | |
) | |
_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 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
is there a way to use this outside ohmyzsh? maybe just dump it in fpath somewhere?