private function registerAutoloader($package)
 {
     $generator = new AutoloadGenerator(new EventDispatcher($this->composer, $this->io));
     $map = $generator->parseAutoloads(array(array($package, $this->getInstallPath($package))), new Package('dummy', '1.0.0.0', '1.0.0'));
     $classLoader = $generator->createLoader($map);
     $classLoader->register();
 }
示例#2
0
 /**
  * @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);
 }
示例#3
0
 private function registerInstaller(PackageInterface $package)
 {
     $downloadPath = $this->getInstallPath($package);
     $extra = $package->getExtra();
     $class = $extra['class'];
     $generator = new AutoloadGenerator();
     $map = $generator->parseAutoloads(array(array($package, $downloadPath)));
     $classLoader = $generator->createLoader($map);
     $classLoader->register();
     if (class_exists($class, false)) {
         $code = file_get_contents($classLoader->findFile($class));
         $code = preg_replace('{^class\\s+(\\S+)}mi', 'class $1_composer_tmp' . self::$classCounter, $code);
         eval('?>' . $code);
         $class .= '_composer_tmp' . self::$classCounter;
         self::$classCounter++;
     }
     $extra = $package->getExtra();
     $installer = new $class($this->vendorDir, $this->binDir, $this->downloadManager, $this->io);
     $this->installationManager->addInstaller($installer);
 }
示例#4
0
 /**
  * @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()];
 }