Browse Source

fix: don't use `$functions_source` for compatibility with zsh < 5.4

Marc Cornellà 1 year ago
parent
commit
4fcf52c2b1
2 changed files with 46 additions and 36 deletions
  1. 13 10
      plugins/aliases/aliases.plugin.zsh
  2. 33 26
      plugins/shell-proxy/shell-proxy.plugin.zsh

+ 13 - 10
plugins/aliases/aliases.plugin.zsh

@@ -1,11 +1,14 @@
-# with lots of 3rd-party amazing aliases installed, just need something to explore it quickly.
-#
-# - acs: alias cheatsheet
-#   group alias by command, pass addition argv to grep.
-function acs(){
-  (( $+commands[python3] )) || {
-    echo "[error] No python executable detected"
-    return
+# Handle $0 according to the standard:
+# https://zdharma-continuum.github.io/Zsh-100-Commits-Club/Zsh-Plugin-Standard.html
+0="${${ZERO:-${0:#$ZSH_ARGZERO}}:-${(%):-%N}}"
+0="${${(M)0:#/*}:-$PWD/$0}"
+
+eval '
+  function acs(){
+    (( $+commands[python3] )) || {
+      echo "[error] No python executable detected"
+      return
+    }
+    alias | python3 "'"${0:h}"'/cheatsheet.py" "$@"
   }
-  alias | python3 ${functions_source[$0]:h}/cheatsheet.py $@
-}
+'

+ 33 - 26
plugins/shell-proxy/shell-proxy.plugin.zsh

@@ -1,32 +1,39 @@
 #!/usr/bin/bash
 # shellcheck disable=SC1090,SC2154
 
-proxy() {
-  # deprecate $DEFAULT_PROXY, use SHELLPROXY_URL instead
-  if [[ -n "$DEFAULT_PROXY" && -z "$SHELLPROXY_URL" ]]; then
-    echo >&2 "proxy: DEFAULT_PROXY is deprecated, use SHELLPROXY_URL instead"
-    SHELLPROXY_URL="$DEFAULT_PROXY"
-    unset DEFAULT_PROXY
-  fi
-
-  # deprecate CONFIG_PROXY, use SHELLPROXY_CONFIG instead
-  if [[ -n "$CONFIG_PROXY" && -z "$SHELLPROXY_CONFIG" ]]; then
-    echo >&2 "proxy: CONFIG_PROXY is deprecated, use SHELLPROXY_CONFIG instead"
-    SHELLPROXY_CONFIG="$CONFIG_PROXY"
-    unset CONFIG_PROXY
-  fi
-
-  # the proxy.py script is in the same directory as this function
-  local proxy="${functions_source[$0]:A:h}/proxy.py"
-
-  # capture the output of the proxy script and bail out if it fails
-  local output
-  output="$(SHELLPROXY_URL="$SHELLPROXY_URL" SHELLPROXY_CONFIG="$SHELLPROXY_CONFIG" "$proxy" "$1")" ||
-    return $?
-
-  # evaluate the output generated by the proxy script
-  source <(echo "$output")
-}
+# Handle $0 according to the standard:
+# https://zdharma-continuum.github.io/Zsh-100-Commits-Club/Zsh-Plugin-Standard.html
+0="${${ZERO:-${0:#$ZSH_ARGZERO}}:-${(%):-%N}}"
+0="${${(M)0:#/*}:-$PWD/$0}"
+
+eval '
+  proxy() {
+    # deprecate $DEFAULT_PROXY, use SHELLPROXY_URL instead
+    if [[ -n "$DEFAULT_PROXY" && -z "$SHELLPROXY_URL" ]]; then
+      echo >&2 "proxy: DEFAULT_PROXY is deprecated, use SHELLPROXY_URL instead"
+      SHELLPROXY_URL="$DEFAULT_PROXY"
+      unset DEFAULT_PROXY
+    fi
+
+    # deprecate CONFIG_PROXY, use SHELLPROXY_CONFIG instead
+    if [[ -n "$CONFIG_PROXY" && -z "$SHELLPROXY_CONFIG" ]]; then
+      echo >&2 "proxy: CONFIG_PROXY is deprecated, use SHELLPROXY_CONFIG instead"
+      SHELLPROXY_CONFIG="$CONFIG_PROXY"
+      unset CONFIG_PROXY
+    fi
+
+    # the proxy.py script is in the same directory as this function
+    local proxy="'"${0:h}"'/proxy.py"
+
+    # capture the output of the proxy script and bail out if it fails
+    local output
+    output="$(SHELLPROXY_URL="$SHELLPROXY_URL" SHELLPROXY_CONFIG="$SHELLPROXY_CONFIG" "$proxy" "$1")" ||
+      return $?
+
+    # evaluate the output generated by the proxy script
+    source <(echo "$output")
+  }
+'
 
 _proxy() {
   local -r commands=('enable' 'disable' 'status')