-
Mike McQuaid authored
These were all made `--formulae` and `--casks` for consistency but that doesn't behave as expected because they have special behaviours in `args`. Instead, use the singular form everywhere.
Mike McQuaid authoredThese were all made `--formulae` and `--casks` for consistency but that doesn't behave as expected because they have special behaviours in `args`. Instead, use the singular form everywhere.
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
_brew_cask 5.92 KiB
#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_cask() {
[ -d "$(brew --repo homebrew/cask)" ] && brew cask $@
}
__brew_all_casks() {
local -a list
local expl
local comp_cachename=brew_casks
if ! _retrieve_cache $comp_cachename; then
list=( $(brew search --cask) )
_store_cache $comp_cachename list
fi
_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'
'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'
'outdated:list the outdated installed Casks'
'reinstall:reinstalls the given Cask'
'style:checks Cask style using RuboCop'
'uninstall:uninstalls the given Cask'
'upgrade:upgrade installed Casks with newer versions'
'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_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_outdated() {
_arguments : \
'--greedy:also list Casks with auto_updates or version \:latest' \
'*::token:__brew_installed_casks'
}
_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_upgrade() {
_arguments : \
'--force:upgrade even if Cask is not present, and --force the install' \
'--greedy:also upgrade Casks with auto_updates or version \:latest' \
'*::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.' \
'--dictionarydir=-:Target location for Dictionaries. The default value is ~/Library/Dictionaries.' \
'--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 "$@"