homebrew-core/Formula/cdargs.rb
Jan Krutisch 37493bbb0a cdargs: support zsh as well
It uses a patch that has been published on the cdargs website but for
some reason never made it into the package. It keeps the script compatible
with bash.

Signed-off-by: Adam Vandenberg <flangy@gmail.com>
2011-06-07 07:52:41 -07:00

71 lines
2.1 KiB
Ruby

require 'formula'
class Cdargs < Formula
url 'http://www.skamphausen.de/downloads/cdargs/cdargs-1.35.tar.gz'
homepage 'http://www.skamphausen.de/cgi-bin/ska/CDargs'
md5 '50be618d67f0b9f2439526193c69c567'
fails_with_llvm "Bus error in ld on SL 10.6.4"
# fixes zsh usage using the patch provided at the cdargs homepage
# (See http://www.skamphausen.de/cgi-bin/ska/CDargs)
def patches
DATA
end
def install
system "./configure", "--prefix=#{prefix}", "--mandir=#{man}"
system "make"
system "make install-strip"
rm Dir['contrib/Makefile*']
prefix.install 'contrib'
(etc+'bash_completion.d').mkpath
ln_sf prefix+'contrib/cdargs-bash.sh', etc+'bash_completion.d/cdargs-bash.sh'
end
def caveats; <<-EOS.undent
Support files for bash, tcsh and emacs are located in:
#{prefix}/contrib
The file for bash is also symlinked to:
#{etc}/bash_completion.d/cdargs-bash.sh
Source it from your .bash_profile or .bashrc to get nice aliases and bash completion.
For zsh use the bash script.
Consult the cdargs man page for more details and instructions.
EOS
end
end
__END__
diff --git a/contrib/cdargs-bash.sh b/contrib/cdargs-bash.sh
index 8a197ef..f3da067 100644
--- a/contrib/cdargs-bash.sh
+++ b/contrib/cdargs-bash.sh
@@ -11,6 +11,12 @@
CDARGS_SORT=0 # set to 1 if you want mark to sort the list
CDARGS_NODUPS=1 # set to 1 if you want mark to delete dups
+# Support ZSH via its BASH completion emulation
+if [ -n "$ZSH_VERSION" ]; then
+ autoload bashcompinit
+ bashcompinit
+fi
+
# --------------------------------------------- #
# Run the cdargs program to get the target #
# directory to be used in the various context #
@@ -166,7 +172,7 @@ function mark ()
local tmpfile
# first clear any bookmarks with this same alias, if file exists
- if [[ "$CDARGS_NODUPS" && -e "$HOME/.cdargs" ]]; then
+ if [ "$CDARGS_NODUPS" ] && [ -e "$HOME/.cdargs" ]; then
tmpfile=`echo ${TEMP:-${TMPDIR:-/tmp}} | sed -e "s/\\/$//"`
tmpfile=$tmpfile/cdargs.$USER.$$.$RANDOM
grep -v "^$1 " "$HOME/.cdargs" > $tmpfile && 'mv' -f $tmpfile "$HOME/.cdargs";