public function buildPackageMap(InstallationManager $installationManager, PackageInterface $mainPackage, array $packages) { $packageMap = parent::buildPackageMap($installationManager, $mainPackage, $packages); $packageMap[0][1] = $installationManager->getInstallPath($mainPackage); // hack the install path return $packageMap; }
/** * @param string $baseDir Root directory of composer package. */ public function __construct($baseDir) { $this->baseDir = $baseDir; $io = new NullIO(); $this->composer = (new Factory())->createComposer($io, $baseDir . '/composer.json', true, $baseDir, false); $generator = new AutoloadGenerator($this->composer->getEventDispatcher(), $io); $generator->setDevMode(true); $packages = $this->composer->getRepositoryManager()->getLocalRepository()->getPackages(); $packageMap = $generator->buildPackageMap($this->composer->getInstallationManager(), $this->composer->getPackage(), $packages); $packageMap[0][1] = $baseDir; // To make root package paths absolute too. $autoloads = $generator->parseAutoloads($packageMap, $this->composer->getPackage()); $this->classLoader = $generator->createLoader($autoloads); }
/** * @param Event $event Event object * @return array Listeners */ protected function getListeners(Event $event) { $package = $this->composer->getPackage(); $scripts = $package->getScripts(); if (empty($scripts[$event->getName()])) { return array(); } if ($this->loader) { $this->loader->unregister(); } $generator = new AutoloadGenerator(); $packages = $this->composer->getRepositoryManager()->getLocalRepository()->getPackages(); $packageMap = $generator->buildPackageMap($this->composer->getInstallationManager(), $package, $packages); $map = $generator->parseAutoloads($packageMap); $this->loader = $generator->createLoader($map); $this->loader->register(); return $scripts[$event->getName()]; }