diff options
| -rw-r--r-- | share/zsh/site-functions/_brew_cask | 195 |
1 files changed, 195 insertions, 0 deletions
diff --git a/share/zsh/site-functions/_brew_cask b/share/zsh/site-functions/_brew_cask new file mode 100644 index 000000000..fb969ffe4 --- /dev/null +++ b/share/zsh/site-functions/_brew_cask @@ -0,0 +1,195 @@ +#compdef brew-cask +#autoload + +# Zsh Autocompletion script for Homebrew Cask +# https://github.com/homebrew/brew + +# Authors: +# Patrick Stadler (https://github.com/pstadler) +# Josh McKinney (https://github.com/joshka) + +# only display the main commands (but enable completing aliases like 'ls') +zstyle -T ':completion:*:*:*:brew-cask:*' tag-order && \ + zstyle ':completion:*:*:*:brew-cask:*' tag-order 'commands' + +__brew_all_casks() { + local -a list + local expl + list=( $(brew cask search) ) + _wanted list expl 'all casks' compadd -a list +} + +__brew_installed_casks() { + local -a list + local expl + list=( $(brew cask list|sed 's/(!)//') ) + _wanted list expl 'installed casks' compadd -a list +} + +__brew_cask_commands() { + local -a commands + commands=( + 'audit:verifies installability of Casks' + 'cat:dump raw source of the given Cask to the standard output' + 'cleanup:cleans up cached downloads and tracker symlinks' + 'create:creates the given Cask and opens it in an editor' + 'doctor:checks for configuration issues' + 'edit:edits the given Cask' + 'fetch:downloads remote application files to local cache' + 'home:opens the homepage of the given Cask' + 'info:displays information about the given Cask' + 'install:installs the given Cask' + 'list:with no args, lists installed Casks; given installed Casks, lists staged files' + 'search:searches all known Casks' + 'style:checks Cask style using RuboCop' + 'uninstall:uninstalls the given Cask' + "update:a synonym for 'brew update'" + 'zap:zaps all files associated with the given Cask' + ) + _describe -t commands "brew cask command" commands +} + +__brew_cask_aliases() { + local -a aliases + aliases=( + 'dr' + 'homepage' + 'abv' + 'ls' + '-S' + 'rm' + 'remove' + ) + _describe -t commands "brew cask command aliases" aliases +} + +__brew_cask_command() { + local command="$1" + local completion_func="_brew_cask_${command//-/_}" + declare -f "$completion_func" >/dev/null && "$completion_func" && return +} + +_brew_cask_abv() { + _brew_cask_info +} + +_brew_cask_audit() { + __brew_all_casks +} + +_brew_cask_cat() { + __brew_all_casks +} + +_brew_cask_cat() { + __brew_all_casks +} + +_brew_cask_cleanup() { + _arguments '--outdated:only clean up cached downloads older than 10 days old' +} + +_brew_cask_create() { + _arguments '*::token:' +} + +_brew_cask_edit() { + __brew_all_casks +} + +_brew_cask_fetch() { + _arguments : \ + '--force:force re-download even if the files are already cached' \ + '*::token:__brew_all_casks' +} + +_brew_cask_home() { + __brew_all_casks +} + +_brew_cask_homepage() { + __brew_cask_home +} + +_brew_cask_info() { + __brew_all_casks +} + +_brew_cask_install() { + _arguments : \ + '--force:re-install even if the Cask appears to be already present' \ + '--skip-cask-deps:skip any Cask dependencies' \ + '--require-sha:abort installation if the Cask does not have a checksum defined' \ + '*::token:__brew_all_casks' +} + +_brew_cask_list() { + _arguments : \ + '-1[format output in a single column]' \ + '-l[format as detailed list]' \ + '*::token:__brew_installed_casks' +} + +_brew_cask_ls() { + _brew_cask_list +} + +_brew_cask_remove() { + _brew_cask_uninstall +} + +_brew_cask_rm() { + _brew_cask_uninstall +} + +_brew_cask_style() { + _arguments : \ + '--fix:auto-correct any style errors if possible' \ + '*::token:__brew_all_casks' +} + +_brew_cask_uninstall() { + _arguments : \ + '--force:uninstall even if the Cask does not appear to be present' \ + '*::token:__brew_installed_casks' +} + +_brew_cask_zap() { + __brew_all_casks +} + +_brew_cask() +{ + local curcontext="$curcontext" state state_descr line + typeset -A opt_args + + _arguments -C : \ + '--verbose:Give additional feedback during installation.' \ + '--appdir=-:Target location for Applications. The default value is /Applications:' \ + '--colorpickerdir=-:Target location for Color Pickers. The default value is ~/Library/ColorPickers.' \ + '--prefpanedir=-:Target location for Preference Panes. The default value is ~/Library/PreferencePanes.' \ + '--qlplugindir=-:Target location for QuickLook Plugins. The default value is ~/Library/QuickLook.' \ + '--fontdir=-:Target location for Fonts. The default value is ~/Library/Fonts.' \ + '--servicedir=-:Target location for Services. The default value is ~/Library/Services.' \ + '--input_methoddir=-:Target location for Input Methods. The default value is ~/Library/Input Methods.' \ + '--internet_plugindir=-:Target location for Internet Plugins. The default value is ~/Library/Internet Plug-Ins.' \ + '--audio_unit_plugindir=-:Target location for Audio Unit Plugins. The default value is ~/Library/Audio/Plug-Ins/Components.' \ + '--vst_plugindir=-:Target location for VST Plugins. The default value is ~/Library/Audio/Plug-Ins/VST.' \ + '--vst3_plugindir=-:Target location for VST3 Plugins. The default value is ~/Library/Audio/Plug-Ins/VST3.' \ + '--screen_saverdir=-:Target location for Screen Savers. The default value is ~/Library/Screen Savers.' \ + '--no-binaries:Do not link "helper" executables to /usr/local/bin.' \ + '--debug:Output debugging information of use to Cask authors and developers.' \ + ':command:->command' \ + '*::options:->options' + + case "$state" in + (command) + _alternative -C 'brew-cask' \ + 'aliases:alias:__brew_cask_aliases' \ + 'commands:command:__brew_cask_commands' ;; + (options) + __brew_cask_command "$line[1]" ;; + esac +} + +_brew_cask "$@" |
