From fd105b6e528127c2c6f5cf59d0e32d761c206971 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marc=20Cornell=C3=A0?= <marc.cornella@live.com>
Date: Tue, 9 Apr 2019 19:38:34 +0200
Subject: [PATCH] Refactor and clean up autojump plugin

---
 plugins/autojump/autojump.plugin.zsh | 57 ++++++++++++++++------------
 1 file changed, 32 insertions(+), 25 deletions(-)

diff --git a/plugins/autojump/autojump.plugin.zsh b/plugins/autojump/autojump.plugin.zsh
index 81664e1ae..7ccd09303 100644
--- a/plugins/autojump/autojump.plugin.zsh
+++ b/plugins/autojump/autojump.plugin.zsh
@@ -1,27 +1,34 @@
-if [ $commands[autojump] ]; then # check if autojump is installed
-  if [ -f $HOME/.autojump/etc/profile.d/autojump.zsh ]; then # manual user-local installation
-    source $HOME/.autojump/etc/profile.d/autojump.zsh
-  elif [ -f $HOME/.autojump/share/autojump/autojump.zsh ]; then # another manual user-local installation
-    source $HOME/.autojump/share/autojump/autojump.zsh
-  elif [ -f $HOME/.nix-profile/etc/profile.d/autojump.sh ]; then # nix installation
-    source $HOME/.nix-profile/etc/profile.d/autojump.sh
-  elif [ -f /run/current-system/sw/share/autojump/autojump.zsh ]; then # nixos installation
-    source /run/current-system/sw/share/autojump/autojump.zsh
-  elif [ -f /usr/share/autojump/autojump.zsh ]; then # debian and ubuntu package
-    source /usr/share/autojump/autojump.zsh
-  elif [ -f /etc/profile.d/autojump.zsh ]; then # manual installation
-    source /etc/profile.d/autojump.zsh
-  elif [ -f /etc/profile.d/autojump.sh ]; then # gentoo installation
-    source /etc/profile.d/autojump.sh
-  elif [ -f /usr/local/share/autojump/autojump.zsh ]; then # freebsd installation
-    source /usr/local/share/autojump/autojump.zsh
-  elif [ -f /opt/local/etc/profile.d/autojump.sh ]; then # mac os x with ports
-    source /opt/local/etc/profile.d/autojump.sh
-  elif [ -f /usr/local/etc/profile.d/autojump.sh ]; then # mac os x with brew
-    source /usr/local/etc/profile.d/autojump.sh
-  elif [ $commands[brew] -a -f $(brew --prefix)/etc/profile.d/autojump.sh ]; then # mac os x with brew
-    source $(brew --prefix)/etc/profile.d/autojump.sh
+(( $+commands[autojump] )) || {
+  echo '[oh-my-zsh] Please install autojump first (https://github.com/wting/autojump)'
+  return
+}
+
+declare -a autojump_paths
+autojump_paths=(
+  $HOME/.autojump/etc/profile.d/autojump.zsh         # manual installation
+  $HOME/.autojump/share/autojump/autojump.zsh        # manual installation
+  $HOME/.nix-profile/etc/profile.d/autojump.sh       # NixOS installation
+  /run/current-system/sw/share/autojump/autojump.zsh # NixOS installation
+  /usr/share/autojump/autojump.zsh                   # Debian and Ubuntu package
+  /etc/profile.d/autojump.zsh                        # manual installation
+  /etc/profile.d/autojump.sh                         # Gentoo installation
+  /usr/local/share/autojump/autojump.zsh             # FreeBSD installation
+  /opt/local/etc/profile.d/autojump.sh               # macOS with MacPorts
+  /usr/local/etc/profile.d/autojump.sh               # macOS with Homebrew (default)
+)
+
+for file in $autojump_paths; do
+  if [[ -f "$file" ]]; then
+    source "$file"
+    found=1
+    break
   fi
-else
-  echo 'Please install autojump to enable the plugin (https://github.com/wting/autojump)'
+done
+
+# if no path found, try Homebrew
+if (( ! found && $+commands[brew] )); then
+  file=$(brew --prefix)/etc/profile.d/autojump.sh
+  [[ -f "$file" ]] && source "$file"
 fi
+
+unset autojump_paths file found