From 3511edc9e8a97634a1a23b2d7de2177d1cb829c2 Mon Sep 17 00:00:00 2001 From: johnstevenson Date: Fri, 15 Dec 2017 18:49:08 +0000 Subject: [PATCH] Fix shell proxy to allow user-defined cygdrive --- src/Composer/Installer/BinaryInstaller.php | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/src/Composer/Installer/BinaryInstaller.php b/src/Composer/Installer/BinaryInstaller.php index 266360d7e..a61ea86a1 100644 --- a/src/Composer/Installer/BinaryInstaller.php +++ b/src/Composer/Installer/BinaryInstaller.php @@ -194,21 +194,14 @@ class BinaryInstaller $proxyCode = << /dev/null; cd $binDir && pwd) +dir=\$(cd "\${0%[/\\\\]*}" > /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 +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;