summaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'plugins')
-rw-r--r--plugins/chucknorris/chucknorris.plugin.zsh28
1 files changed, 25 insertions, 3 deletions
diff --git a/plugins/chucknorris/chucknorris.plugin.zsh b/plugins/chucknorris/chucknorris.plugin.zsh
index 096364633..1dbb04ef0 100644
--- a/plugins/chucknorris/chucknorris.plugin.zsh
+++ b/plugins/chucknorris/chucknorris.plugin.zsh
@@ -1,6 +1,28 @@
-if [ ! -f $ZSH/plugins/chucknorris/fortunes/chucknorris.dat ]; then
- strfile $ZSH/plugins/chucknorris/fortunes/chucknorris $ZSH/plugins/chucknorris/fortunes/chucknorris.dat
+# chucknorris: Chuck Norris fortunes
+
+# Automatically generate or update Chuck's compiled fortune data file
+# $0 must be used outside a local function. This variable name is unlikly to collide.
+CHUCKNORRIS_PLUGIN_DIR=${0:h}
+
+() {
+local DIR=$CHUCKNORRIS_PLUGIN_DIR/fortunes
+if [[ ! -f $DIR/chucknorris.dat ]] || [[ $DIR/chucknorris.dat -ot $DIR/chucknorris ]]; then
+ # For some reason, Cygwin puts strfile in /usr/sbin, which is not on the path by default
+ local strfile=strfile
+ if ! which strfile &>/dev/null && [[ -f /usr/sbin/strfile ]]; then
+ strfile=/usr/sbin/strfile
+ fi
+ if which $strfile &> /dev/null; then
+ $strfile $DIR/chucknorris $DIR/chucknorris.dat >/dev/null
+ else
+ echo "[oh-my-zsh] chucknorris depends on strfile, which is not installed" >&2
+ echo "[oh-my-zsh] strfile is often provided as part of the 'fortune' package" >&2
+ fi
fi
-alias chuck="fortune -a $ZSH/plugins/chucknorris/fortunes"
+# Aliases
+alias chuck="fortune -a $DIR"
alias chuck_cow="chuck | cowthink"
+}
+
+unset CHUCKNORRIS_PLUGIN_DIR