Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
generateUnixyProxyCode() properly supporting Cygwin & Git Bash
  • Loading branch information
Wirone committed Aug 3, 2014
1 parent 4ecdbf8 commit 0558bf0
Showing 1 changed file with 24 additions and 8 deletions.
32 changes: 24 additions & 8 deletions src/Composer/Installer/LibraryInstaller.php
Expand Up @@ -303,13 +303,29 @@ protected function generateWindowsProxyCode($bin, $link)
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 = <<<PROXY
#!/bin/sh
dir=$(d=$(dirname "$0"); cd "\$d"; 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
fi
dir=$(echo \$dir | sed 's/ /\ /g')
"\${dir}/$binFile" "$@"
PROXY;

return $proxyCode;
}
}

0 comments on commit 0558bf0

Please sign in to comment.