Browse Source

Merge pull request #2329 from pstadler/brew-cask

add brew-cask plugin
Robby Russell 11 years ago
parent
commit
00d6ef8a31
1 changed files with 84 additions and 0 deletions
  1. 84 0
      plugins/brew-cask/brew-cask.plugin.zsh

+ 84 - 0
plugins/brew-cask/brew-cask.plugin.zsh

@@ -0,0 +1,84 @@
+# 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'
+              'cleanup:cleans up cached downloads'
+              'create:creates a cask of the given name and opens it in an editor'
+              'doctor:checks for configuration issues'
+              'edit:edits the cask of the given name'
+              'fetch:downloads Cask resources to local cache'
+              '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'
+              "update:a synonym for 'brew update'"
+            )
+            _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
+}