Browse Source

refactor(chucknorris): refresh plugin code

Marc Cornellà 2 years ago
parent
commit
53c9661b00
2 changed files with 17 additions and 23 deletions
  1. 1 3
      plugins/chucknorris/README.md
  2. 16 20
      plugins/chucknorris/chucknorris.plugin.zsh

+ 1 - 3
plugins/chucknorris/README.md

@@ -1,8 +1,6 @@
 # chucknorris
 
-Chuck Norris fortunes plugin for oh-my-zsh. Perfectly suitable as MOTD.
-
-**Maintainers**: [apjanke](https://github.com/apjanke) [maff](https://github.com/maff)
+Chuck Norris fortunes plugin for Oh My Zsh. Perfectly suitable as MOTD.
 
 To use it add `chucknorris` to the plugins array in you zshrc file.
 

+ 16 - 20
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