generateUnixyProxyCode() properly supporting Cygwin & Git Bash
Based on Composer's proxy: https://github.com/composer/windows-setup/blob/master/src/shims/composerpull/3184/head
parent
4ecdbf89c4
commit
0558bf0079
|
@ -303,13 +303,29 @@ class LibraryInstaller implements InstallerInterface
|
||||||
protected function generateUnixyProxyCode($bin, $link)
|
protected function generateUnixyProxyCode($bin, $link)
|
||||||
{
|
{
|
||||||
$binPath = $this->filesystem->findShortestPath($link, $bin);
|
$binPath = $this->filesystem->findShortestPath($link, $bin);
|
||||||
|
$binDir = escapeshellarg(dirname($binPath));
|
||||||
|
$binFile = basename($binPath);
|
||||||
|
|
||||||
return "#!/usr/bin/env sh\n".
|
$proxyCode = <<<PROXY
|
||||||
'SRC_DIR="`pwd`"'."\n".
|
#!/bin/sh
|
||||||
'cd "`dirname "$0"`"'."\n".
|
|
||||||
'cd '.escapeshellarg(dirname($binPath))."\n".
|
dir=$(d=$(dirname "$0"); cd "\$d"; cd $binDir && pwd)
|
||||||
'BIN_TARGET="`pwd`/'.basename($binPath)."\"\n".
|
|
||||||
'cd "$SRC_DIR"'."\n".
|
# see if we are running in cygwin by checking for cygpath program
|
||||||
'"$BIN_TARGET" "$@"'."\n";
|
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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue