Jelajahi Sumber

Fix shell proxy to allow user-defined cygdrive

johnstevenson 7 tahun lalu
induk
melakukan
3511edc9e8
1 mengubah file dengan 6 tambahan dan 13 penghapusan
  1. 6 13
      src/Composer/Installer/BinaryInstaller.php

+ 6 - 13
src/Composer/Installer/BinaryInstaller.php

@@ -194,21 +194,14 @@ class BinaryInstaller
         $proxyCode = <<<PROXY
 #!/usr/bin/env sh
 
-dir=$(d=\${0%[/\\\\]*}; cd "\$d" > /dev/null; cd $binDir && pwd)
-
-# See if we are running in Cygwin by checking for cygpath program
-if command -v 'cygpath' >/dev/null 2>&1; then
-	# Cygwin paths start with /cygdrive/ which will break windows PHP,
-	# so we need to translate the dir path to windows format. However
-	# we could be using cygwin PHP which does not require this, so we
-	# test if the path to PHP starts with /cygdrive/ rather than /usr/bin
-	if [[ $(which php) == /cygdrive/* ]]; then
-		dir=$(cygpath -m "\$dir");
-	fi
+dir=\$(cd "\${0%[/\\\\]*}" > /dev/null; cd $binDir && pwd)
+
+if [ -d /proc/cygdrive ] && [[ \$(which php) == \$(readlink -n /proc/cygdrive)/* ]]; then
+   # We are in Cgywin using Windows php, so the path must be translated
+   dir=\$(cygpath -m "\$dir");
 fi
 
-dir=$(echo \$dir | sed 's/ /\ /g')
-"\${dir}/$binFile" "$@"
+"\${dir}/$binFile" "\$@"
 
 PROXY;