Hide installed packages from suggestions when package is not found

main
xy2z 5 years ago
parent f753c15664
commit a8abdd9639

@ -792,7 +792,13 @@ EOT
}
$similarPackages = array();
$installedRepo = $this->getComposer()->getRepositoryManager()->getLocalRepository();
foreach ($results as $result) {
if ($installedRepo->hasPackageName($result['name'])) {
// Ignore installed package
continue;
}
$similarPackages[$result['name']] = levenshtein($package, $result['name']);
}
asort($similarPackages);

@ -132,6 +132,20 @@ class ArrayRepository extends BaseRepository
return false;
}
/**
* {@inheritDoc}
*/
public function hasPackageName(string $packageName)
{
foreach ($this->getPackages() as $repoPackage) {
if ($packageName === $repoPackage->getName()) {
return true;
}
}
return false;
}
/**
* Adds a new package to the repository
*

@ -64,6 +64,21 @@ class CompositeRepository extends BaseRepository
return false;
}
/**
* {@inheritdoc}
*/
public function hasPackageName(string $packageName)
{
foreach ($this->repositories as $repository) {
/* @var $repository RepositoryInterface */
if ($repository->hasPackageName($packageName)) {
return true;
}
}
return false;
}
/**
* {@inheritdoc}
*/

@ -35,6 +35,15 @@ interface RepositoryInterface extends \Countable
*/
public function hasPackage(PackageInterface $package);
/**
* Checks if specified package name is registered (installed).
*
* @param string $package_name package name (vendor/project)
*
* @return bool
*/
public function hasPackageName(string $packageName);
/**
* Searches for the first match of a package by name and version.
*

Loading…
Cancel
Save