예제 #1
0
파일: Factory.php 프로젝트: helhum/t3satis
 protected function createRepositoryManager(IOInterface $io, Config $config, EventDispatcher $eventDispatcher = null)
 {
     $rm = parent::createRepositoryManager($io, $config, $eventDispatcher);
     $rm->setRepositoryClass('t3git', 'Helhum\\T3Satis\\Composer\\Repository\\Typo3ExtensionRepository');
     $repoCollections = $config->get('repository-collections');
     if ($repoCollections && is_array($repoCollections)) {
         foreach ($repoCollections as $repoCollection) {
             if (isset($repoCollection['type'])) {
                 if (!isset($this->repoCollectionClasses[$repoCollection['type']])) {
                     throw new \UnexpectedValueException('The collection type ' . $repoCollection['type'] . ' is unkown!', 1439304140);
                 }
                 $collectionClass = $this->repoCollectionClasses[$repoCollection['type']];
             } elseif (isset($repoCollection['className'])) {
                 $collectionClass = $repoCollection['className'];
             } else {
                 throw new \UnexpectedValueException('The collection must either be specified with "type" or "className"!', 1439304139);
             }
             if (!in_array('Helhum\\T3Satis\\Composer\\Repository\\RepositoryCollectionInterface', class_implements($collectionClass))) {
                 throw new \UnexpectedValueException('The collection class must be autoloadable and must implement the RepositoryCollectionInterface', 1439304139);
             }
             /** @var RepositoryCollectionInterface $collection */
             $collection = new $collectionClass();
             $repos = $collection->fetchRepositoryConfiguration();
             $config->merge(array('repositories' => $repos));
         }
     }
     return $rm;
 }