/** * searches for projects. * * @param string $name * @param \Closure $finder * @param string $nameKey * * @return Project[] */ protected function requestProjects($name, \Closure $finder, $nameKey) { $projects = []; if ($this->repoParser->isConcrete($name)) { $project = $this->getProject($name); $projects[$project->getName()] = $project; } else { $repos = $finder($name); if (true === $this->repoParser->isWildcard($name)) { foreach ((array) $repos as $repo) { $project = $this->getProject($repo[$nameKey]); $projects[$project->getName()] = $project; } } else { foreach ((array) $repos as $repo) { if (false === $this->repoParser->matchesRegex($name, $repo[$nameKey])) { continue; } $project = $this->getProject($repo[$nameKey]); $projects[$project->getName()] = $project; } } } return $projects; }