Browse Source

Merge branch 'apjanke-cask-homebrew-paths'

Marc Cornellà 8 years ago
parent
commit
f2580833c0
2 changed files with 37 additions and 5 deletions
  1. 11 0
      plugins/cask/README.md
  2. 26 5
      plugins/cask/cask.plugin.zsh

+ 11 - 0
plugins/cask/README.md

@@ -0,0 +1,11 @@
+# cask plugin
+
+Loads `cask` completion from non-standard locations, such as if installed
+via Homebrew or others. To enable it, add `cask` to your plugins array:
+
+```zsh
+plugins=(... cask)
+```
+
+Make sure you have the `cask` directory in your `$PATH` before loading
+Oh My Zsh, otherwise you'll get the "command not found" error.

+ 26 - 5
plugins/cask/cask.plugin.zsh

@@ -1,5 +1,26 @@
-if which cask &> /dev/null; then
-  source $(dirname $(which cask))/../etc/cask_completion.zsh
-else
-  print "zsh cask plugin: cask not found"
-fi
+() {
+  emulate -L zsh
+
+  if ! (( $+commands[cask] )); then
+    print "zsh cask plugin: cask command not found" >&2
+    return
+  fi
+
+  cask_base=${commands[cask]:h:h}
+
+  # Plain cask installation location (for Cask 0.7.2 and earlier)
+  comp_files=($cask_base/etc/cask_completion.zsh)
+
+  # Mac Homebrew installs the completion in a different location
+  if (( $+commands[brew] )); then
+    comp_files+=($(brew --prefix)/share/zsh/site-functions/cask_completion.zsh)
+  fi
+
+  # Load first found file
+  for f in $comp_files; do
+    if [[ -f "$f" ]]; then
+      source "$f"
+      break
+    fi
+  done
+}