From 0558bf007999eee0a9b056adb2e5c7135fa1df79 Mon Sep 17 00:00:00 2001 From: Grzegorz 'Wirone' Korba Date: Mon, 4 Aug 2014 00:24:44 +0200 Subject: [PATCH] generateUnixyProxyCode() properly supporting Cygwin & Git Bash Based on Composer's proxy: https://github.com/composer/windows-setup/blob/master/src/shims/composer --- src/Composer/Installer/LibraryInstaller.php | 32 +++++++++++++++------ 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/src/Composer/Installer/LibraryInstaller.php b/src/Composer/Installer/LibraryInstaller.php index 4facfd494..3682fa719 100644 --- a/src/Composer/Installer/LibraryInstaller.php +++ b/src/Composer/Installer/LibraryInstaller.php @@ -303,13 +303,29 @@ class LibraryInstaller implements InstallerInterface protected function generateUnixyProxyCode($bin, $link) { $binPath = $this->filesystem->findShortestPath($link, $bin); - - return "#!/usr/bin/env sh\n". - 'SRC_DIR="`pwd`"'."\n". - 'cd "`dirname "$0"`"'."\n". - 'cd '.escapeshellarg(dirname($binPath))."\n". - 'BIN_TARGET="`pwd`/'.basename($binPath)."\"\n". - 'cd "$SRC_DIR"'."\n". - '"$BIN_TARGET" "$@"'."\n"; + $binDir = escapeshellarg(dirname($binPath)); + $binFile = basename($binPath); + + $proxyCode = <</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 +fi + +dir=$(echo \$dir | sed 's/ /\ /g') +"\${dir}/$binFile" "$@" +PROXY; + + return $proxyCode; } }