mirror of
https://github.com/Homebrew/brew.git
synced 2025-07-14 16:09:03 +08:00

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.
216 lines
5.9 KiB
Plaintext
216 lines
5.9 KiB
Plaintext
#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 "$@"
|