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; }