Created
July 15, 2013 02:04
-
-
Save qwerty12/5997039 to your computer and use it in GitHub Desktop.
brew_zsh_completion.zsh from Homebrew with the "versions" completion added back in again
This file contains 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
#compdef brew | |
# Brew ZSH completion function | |
# Drop this somewhere in your $fpath (like /usr/share/zsh/site-functions) | |
# and rename it _brew | |
# | |
# altered from _fink | |
_brew_all_formulae() { | |
formulae=(`brew search`) | |
} | |
_brew_installed_formulae() { | |
installed_formulae=(`brew list`) | |
} | |
_brew_installed_taps() { | |
installed_taps=(`brew tap`) | |
} | |
_brew_outdated_formulae() { | |
outdated_formulae=(`brew outdated`) | |
} | |
local -a _1st_arguments | |
_1st_arguments=( | |
'cat:display formula file for a formula' | |
'cleanup:uninstall unused and old versions of packages' | |
'create:create a new formula' | |
'deps:list dependencies and dependants of a formula' | |
'doctor:audits your installation for common issues' | |
'edit:edit a formula' | |
'home:visit the homepage of a formula or the brew project' | |
'info:information about a formula' | |
'install:install a formula' | |
'link:link a formula' | |
'list:list files in a formula or not-installed formulae' | |
'log:git commit log for a formula' | |
'missing:check all installed formuale for missing dependencies.' | |
'outdated:list formulae for which a newer version is available' | |
'pin:pin specified formulae' | |
'prune:remove dead links' | |
'remove:remove a formula' | |
'search:search for a formula (/regex/ or string)' | |
'server:start a local web app that lets you browse formulae (requires Sinatra)' | |
'tap:tap a new formula repository from GitHub, or list existing taps' | |
'unlink:unlink a formula' | |
'unpin:unpin specified formulae' | |
'untap:remove a tapped repository' | |
'update:freshen up links' | |
'upgrade:upgrade outdated formulae' | |
'uses:show formulae which depend on a formula' | |
'versions:show all available formula versions' | |
) | |
local expl | |
local -a formulae installed_formulae installed_taps outdated_formulae | |
_arguments \ | |
'(-v)-v[verbose]' \ | |
'(--cellar)--cellar[brew cellar]' \ | |
'(--config)--config[brew configuration]' \ | |
'(--env)--env[brew environment]' \ | |
'(--repository)--repository[brew repository]' \ | |
'(--version)--version[version information]' \ | |
'(--prefix)--prefix[where brew lives on this system]' \ | |
'(--cache)--cache[brew cache]' \ | |
'*:: :->subcmds' && return 0 | |
if (( CURRENT == 1 )); then | |
_describe -t commands "brew subcommand" _1st_arguments | |
return | |
fi | |
case "$words[1]" in | |
search|-S) | |
_arguments \ | |
'(--macports)--macports[search the macports repository]' \ | |
'(--fink)--fink[search the fink repository]' ;; | |
list|ls) | |
_arguments \ | |
'(--unbrewed)--unbrewed[files in brew --prefix not controlled by brew]' \ | |
'(--pinned)--pinned[list all versions of pinned formulae]' \ | |
'(--versions)--versions[list all installed versions of a formula]' \ | |
'1: :->forms' && return 0 | |
if [[ "$state" == forms ]]; then | |
_brew_installed_formulae | |
_wanted installed_formulae expl 'installed formulae' compadd -a installed_formulae | |
fi ;; | |
install|home|homepage|log|info|abv|uses|cat|deps|edit|options|versions) | |
_brew_all_formulae | |
_wanted formulae expl 'all formulae' compadd -a formulae ;; | |
remove|rm|uninstall|unlink|cleanup|link|ln|pin|unpin) | |
_brew_installed_formulae | |
_wanted installed_formulae expl 'installed formulae' compadd -a installed_formulae ;; | |
upgrade) | |
_brew_outdated_formulae | |
_wanted outdated_formulae expl 'outdated formulae' compadd -a outdated_formulae ;; | |
untap) | |
_brew_installed_taps | |
_wanted installed_taps expl 'installed taps' compadd -a installed_taps ;; | |
esac |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment