1
0
Fork 0

Merge pull request #868 from palex-fpt/pear-binaries

Add php proxies that add all locally installed packages to include_path
pull/870/head
Jordi Boggiano 2012-07-03 06:49:17 -07:00
commit 0a55707f3e
1 changed files with 48 additions and 3 deletions

View File

@ -31,10 +31,8 @@ class PearInstaller extends LibraryInstaller
/**
* Initializes library installer.
*
* @param string $vendorDir relative path for packages home
* @param string $binDir relative path for binaries
* @param DownloadManager $dm download manager
* @param IOInterface $io io instance
* @param Composer $composer
* @param string $type package type that this installer handles
*/
public function __construct(IOInterface $io, Composer $composer, $type = 'pear-library')
@ -89,4 +87,51 @@ class PearInstaller extends LibraryInstaller
return $binaries;
}
protected function initializeBinDir()
{
parent::initializeBinDir();
file_put_contents($this->binDir.'/composer-php', $this->generateUnixyPhpProxyCode());
chmod($this->binDir.'/composer-php', 0777);
file_put_contents($this->binDir.'/composer-php.bat', $this->generateWindowsPhpProxyCode());
chmod($this->binDir.'/composer-php.bat', 0777);
}
private function generateWindowsPhpProxyCode()
{
return
"@echo off\r\n" .
"setlocal enabledelayedexpansion\r\n" .
"set BIN_DIR=%~dp0\r\n" .
"set VENDOR_DIR=%BIN_DIR%..\\\r\n" .
" set DIRS=.\r\n" .
"FOR /D %%V IN (%VENDOR_DIR%*) DO (\r\n" .
" FOR /D %%P IN (%%V\\*) DO (\r\n" .
" set DIRS=!DIRS!;%%~fP\r\n" .
" )\r\n" .
")\r\n" .
"php.exe -d include_path=!DIRS! %*\r\n";
}
private function generateUnixyPhpProxyCode()
{
return
"#!/usr/bin/env sh\n".
"SRC_DIR=`pwd`\n".
"BIN_DIR=`dirname $(readlink -f $0)`\n".
"VENDOR_DIR=`dirname \$BIN_DIR`\n".
"cd \$BIN_DIR\n".
"DIRS=\"\"\n".
"for vendor in \$VENDOR_DIR/*; do\n".
" if [ -d \"\$vendor\" ]; then\n".
" for package in \$vendor/*; do\n".
" if [ -d \"\$package\" ]; then\n".
" DIRS=\"\${DIRS}:\${package}\"\n".
" fi\n".
" done\n".
" fi\n".
"done\n".
"cd \$SRC_DIR\n".
"`which php` -d include_path=\".\$DIRS\" $@\n";
}
}