Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

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

Add php proxies that add all locally installed packages to include_path
  • Loading branch information...
commit 0a55707f3e38ed89ff7844c67652b116a124ac09 2 parents db16f68 + 3bdae18
Jordi Boggiano Seldaek authored
Showing with 48 additions and 3 deletions.
  1. +48 −3 src/Composer/Installer/PearInstaller.php
51 src/Composer/Installer/PearInstaller.php
View
@@ -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 @@ protected function getBinaries(PackageInterface $package)
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";
+ }
}
Please sign in to comment.
Something went wrong with that request. Please try again.