/** * {@inheritdoc} */ public function whatProvides(Pool $pool, $name, $bypassFilters = false) { if (null !== ($provides = $this->findWhatProvides($name))) { return $provides; } try { $repoName = Util::convertAliasName($name); $packageName = Util::cleanPackageName($repoName); $packageUrl = str_replace('%package%', $packageName, $this->lazyProvidersUrl); $cacheName = $packageName . '-' . sha1($packageName) . '-package.json'; $data = $this->fetchFile($packageUrl, $cacheName); $repo = $this->createVcsRepositoryConfig($data, Util::cleanPackageName($name)); $repo['vcs-package-filter'] = $this->packageFilter; $repo['vcs-driver-options'] = Util::getArrayValue($this->repoConfig, 'vcs-driver-options', array()); Util::addRepository($this->io, $this->rm, $this->repos, $name, $repo, $pool); $this->providers[$name] = array(); } catch (\Exception $ex) { $this->whatProvidesManageException($pool, $name, $ex); } return $this->providers[$name]; }
/** * Create the repository config. * * @param RepositoryManager $rm The repository manager * @param VcsPackageFilter $filter The vcs package filter * @param array $extra The composer extra * @param string $assetType The asset type * * @return array */ public static function createRepositoryConfig(RepositoryManager $rm, VcsPackageFilter $filter, array $extra, $assetType) { $opts = Util::getArrayValue($extra, 'asset-registry-options', array()); return array('repository-manager' => $rm, 'vcs-package-filter' => $filter, 'asset-options' => static::createAssetOptions($opts, $assetType), 'vcs-driver-options' => Util::getArrayValue($extra, 'asset-vcs-driver-options', array())); }