Merge pull request #208 from stof/find_packages

Find packages
main
Jordi Boggiano 13 years ago
commit 05c84e9dfd

@ -85,11 +85,9 @@ EOT
$composer->getRepositoryManager()->getRepositories() $composer->getRepositoryManager()->getRepositories()
); );
foreach ($repos as $repository) { foreach ($repos as $repository) {
foreach ($repository->getPackages() as $package) { foreach ($repository->findPackagesByName($input->getArgument('package')) as $package) {
if ($package->getName() === $input->getArgument('package')) { if (null === $highestVersion || version_compare($package->getVersion(), $highestVersion->getVersion(), '>=')) {
if (null === $highestVersion || version_compare($package->getVersion(), $highestVersion->getVersion(), '>=')) { $highestVersion = $package;
$highestVersion = $package;
}
} }
} }
} }
@ -135,10 +133,8 @@ EOT
$versions = array(); $versions = array();
foreach ($composer->getRepositoryManager()->getRepositories() as $repository) { foreach ($composer->getRepositoryManager()->getRepositories() as $repository) {
foreach ($repository->getPackages() as $version) { foreach ($repository->findPackagesByName($package->getName()) as $version) {
if ($version->getName() === $package->getName()) { $versions[] = $version->getPrettyVersion();
$versions[] = $version->getPrettyVersion();
}
} }
} }

@ -41,6 +41,19 @@ class ArrayRepository implements RepositoryInterface
} }
} }
/**
* {@inheritDoc}
*/
public function findPackagesByName($name)
{
// normalize name
$name = strtolower($name);
return array_filter($this->getPackages(), function (PackageInterface $package) use ($name) {
return $package->getName() === $name;
});
}
/** /**
* {@inheritDoc} * {@inheritDoc}
*/ */

@ -41,6 +41,15 @@ interface RepositoryInterface extends \Countable
*/ */
function findPackage($name, $version); function findPackage($name, $version);
/**
* Searches for packages by it's name.
*
* @param string $name package name
*
* @return array
*/
function findPackagesByName($name);
/** /**
* Returns list of registered packages. * Returns list of registered packages.
* *

Loading…
Cancel
Save