瀏覽代碼

fix(installer): more robust yarn validation (#2113)

Felipe Baltor 3 年之前
父節點
當前提交
5333cb3de3
共有 1 個文件被更改,包括 15 次插入5 次删除
  1. 15 5
      utils/installer/install.sh

+ 15 - 5
utils/installer/install.sh

@@ -222,19 +222,29 @@ function __install_nodejs_deps_yarn() {
 function __validate_node_installation() {
   local pkg_manager="$1"
   local manager_home
-  manager_home="$($pkg_manager config get prefix 2>/dev/null)"
+
+  if ! command -v "$pkg_manager" &>/dev/null; then
+    return 1
+  fi
+
+  if [ "$pkg_manager" == "npm" ]; then
+    manager_home="$(npm config get prefix 2>/dev/null)"
+  else
+    manager_home="$(yarn global bin 2>/dev/null)"
+  fi
 
   if [ ! -d "$manager_home" ] || [ ! -w "$manager_home" ]; then
-    echo "[ERROR] Unable to install without administrative privileges. Please set your NPM_HOME correctly and try again."
-    exit 1
+    echo "[ERROR] Unable to install using [$pkg_manager] without administrative privileges."
+    return 1
   fi
+
+  return 0
 }
 
 function install_nodejs_deps() {
   local -a pkg_managers=("yarn" "npm")
   for pkg_manager in "${pkg_managers[@]}"; do
-    if command -v "$pkg_manager" &>/dev/null; then
-      __validate_node_installation "$pkg_manager"
+    if __validate_node_installation "$pkg_manager"; then
       eval "__install_nodejs_deps_$pkg_manager"
       return
     fi