From fc17e26bc326948ca38679464a2228716073e95f Mon Sep 17 00:00:00 2001 From: Christophe Coevoet Date: Mon, 16 Jan 2012 12:44:47 +0100 Subject: [PATCH 1/3] Added a method to find packages by name --- src/Composer/Repository/ArrayRepository.php | 13 +++++++++++++ src/Composer/Repository/RepositoryInterface.php | 9 +++++++++ 2 files changed, 22 insertions(+) diff --git a/src/Composer/Repository/ArrayRepository.php b/src/Composer/Repository/ArrayRepository.php index 06910bbe3..724f9bd4c 100644 --- a/src/Composer/Repository/ArrayRepository.php +++ b/src/Composer/Repository/ArrayRepository.php @@ -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} */ diff --git a/src/Composer/Repository/RepositoryInterface.php b/src/Composer/Repository/RepositoryInterface.php index a94ecea4c..d791b161d 100644 --- a/src/Composer/Repository/RepositoryInterface.php +++ b/src/Composer/Repository/RepositoryInterface.php @@ -41,6 +41,15 @@ interface RepositoryInterface extends \Countable */ 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. * From 1fdb7aef56ec6d380bd23da24de83a7ef8a7f97a Mon Sep 17 00:00:00 2001 From: Christophe Coevoet Date: Mon, 16 Jan 2012 12:52:17 +0100 Subject: [PATCH 2/3] Changed the ShowCommand to use the new method --- src/Composer/Command/ShowCommand.php | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/src/Composer/Command/ShowCommand.php b/src/Composer/Command/ShowCommand.php index 224053c8e..334cd8997 100644 --- a/src/Composer/Command/ShowCommand.php +++ b/src/Composer/Command/ShowCommand.php @@ -85,11 +85,9 @@ EOT $composer->getRepositoryManager()->getRepositories() ); foreach ($repos as $repository) { - foreach ($repository->getPackages() as $package) { - if ($package->getName() === $input->getArgument('package')) { - if (null === $highestVersion || version_compare($package->getVersion(), $highestVersion->getVersion(), '>=')) { - $highestVersion = $package; - } + foreach ($repository->findPackagesByName($input->getArgument('package')) as $package) { + if (null === $highestVersion || version_compare($package->getVersion(), $highestVersion->getVersion(), '>=')) { + $highestVersion = $package; } } } @@ -135,10 +133,8 @@ EOT $versions = array(); foreach ($composer->getRepositoryManager()->getRepositories() as $repository) { - foreach ($repository->getPackages() as $version) { - if ($version->getName() === $package->getName()) { - $versions[] = $version->getPrettyVersion(); - } + foreach ($repository->findPackagesByName($package->getName()) as $version) { + $versions[] = $version->getPrettyVersion(); } } From bd1d20b2c971dfe67d7db2b4fac0c141dae80678 Mon Sep 17 00:00:00 2001 From: Christophe Coevoet Date: Mon, 16 Jan 2012 22:11:31 +0100 Subject: [PATCH 3/3] Fixed CS --- src/Composer/Repository/ArrayRepository.php | 2 +- src/Composer/Repository/RepositoryInterface.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Composer/Repository/ArrayRepository.php b/src/Composer/Repository/ArrayRepository.php index 724f9bd4c..8d3898f3d 100644 --- a/src/Composer/Repository/ArrayRepository.php +++ b/src/Composer/Repository/ArrayRepository.php @@ -49,7 +49,7 @@ class ArrayRepository implements RepositoryInterface // normalize name $name = strtolower($name); - return array_filter($this->getPackages(), function(PackageInterface $package) use ($name) { + return array_filter($this->getPackages(), function (PackageInterface $package) use ($name) { return $package->getName() === $name; }); } diff --git a/src/Composer/Repository/RepositoryInterface.php b/src/Composer/Repository/RepositoryInterface.php index d791b161d..2c1f7d43c 100644 --- a/src/Composer/Repository/RepositoryInterface.php +++ b/src/Composer/Repository/RepositoryInterface.php @@ -42,7 +42,7 @@ interface RepositoryInterface extends \Countable function findPackage($name, $version); /** - * Searches for packages by it's name . + * Searches for packages by it's name. * * @param string $name package name *