summaryrefslogtreecommitdiff
path: root/plugins/chucknorris/chucknorris.plugin.zsh
diff options
context:
space:
mode:
authorTuowen Zhao <ztuowen@gmail.com>2021-10-23 18:01:40 -0600
committerTuowen Zhao <ztuowen@gmail.com>2021-10-23 18:01:40 -0600
commitfad92c603be0ff36825cc53bf8c485d4b95c7869 (patch)
tree407fe826be62a3543b6feab4f3552f58575234de /plugins/chucknorris/chucknorris.plugin.zsh
parentc674485e6b4abe313469900997d893d2940ee843 (diff)
parentf1dd97bb2a9df55fae9b1ca26c829b9f8b290667 (diff)
downloadzsh-fad92c603be0ff36825cc53bf8c485d4b95c7869.tar.gz
zsh-fad92c603be0ff36825cc53bf8c485d4b95c7869.tar.bz2
zsh-fad92c603be0ff36825cc53bf8c485d4b95c7869.zip
Merge remote-tracking branch 'origin/master'
Diffstat (limited to 'plugins/chucknorris/chucknorris.plugin.zsh')
-rw-r--r--plugins/chucknorris/chucknorris.plugin.zsh36
1 files changed, 16 insertions, 20 deletions
diff --git a/plugins/chucknorris/chucknorris.plugin.zsh b/plugins/chucknorris/chucknorris.plugin.zsh
index 1dbb04ef0..b90abe320 100644
--- a/plugins/chucknorris/chucknorris.plugin.zsh
+++ b/plugins/chucknorris/chucknorris.plugin.zsh
@@ -1,28 +1,24 @@
-# chucknorris: Chuck Norris fortunes
+() {
+ # %x: name of file containing code being executed
+ local fortunes_dir="${${(%):-%x}:h}/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}
+ # Aliases
+ alias chuck="fortune -a $fortunes_dir"
+ alias chuck_cow="chuck | cowthink"
-() {
-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
+ # Automatically generate or update Chuck's compiled fortune data file
+ if [[ "$fortunes_dir/chucknorris" -ot "$fortunes_dir/chucknorris.dat" ]]; then
+ return
fi
- if which $strfile &> /dev/null; then
- $strfile $DIR/chucknorris $DIR/chucknorris.dat >/dev/null
- else
+
+ # For some reason, Cygwin puts strfile in /usr/sbin, which is not on the path by default
+ local strfile="${commands[strfile]:-/usr/sbin/strfile}"
+ if [[ ! -x "$strfile" ]]; then
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
+ return
fi
-fi
-# Aliases
-alias chuck="fortune -a $DIR"
-alias chuck_cow="chuck | cowthink"
+ # Generate the compiled fortune data file
+ $strfile "$fortunes_dir/chucknorris" "$fortunes_dir/chucknorris.dat" >/dev/null
}
-
-unset CHUCKNORRIS_PLUGIN_DIR