1
0
Fork 0

Show suggestions from root package in suggest, and lists them in count only on first install of a project, fixes #8805

pull/8777/head^2
Jordi Boggiano 2020-04-23 10:53:11 +02:00
parent 6529fabb24
commit 9b8694bc0b
No known key found for this signature in database
GPG Key ID: 7BBD42C429EC80BC
3 changed files with 12 additions and 4 deletions

View File

@ -71,7 +71,9 @@ EOT
$reporter = new SuggestedPackagesReporter($this->getIO());
$filter = $input->getArgument('packages');
foreach ($installedRepo->getPackages() as $package) {
$packages = $installedRepo->getPackages();
$packages[] = $composer->getPackage();
foreach ($packages as $package) {
if (!empty($filter) && !in_array($package->getName(), $filter)) {
continue;
}

View File

@ -203,6 +203,8 @@ class Installer
throw new \RuntimeException("The installer options updateMirrors and updateAllowList are mutually exclusive.");
}
$isFreshInstall = $this->repositoryManager->getLocalRepository()->isFresh();
// Force update if there is no lock file present
if (!$this->update && !$this->locker->isLocked()) {
$this->io->writeError('<warning>No lock file found. Updating dependencies instead of installing from lock file. Use composer update over composer install if you do not have a lock file.</warning>');
@ -264,6 +266,9 @@ class Installer
$this->createPlatformRepo(false),
new RootPackageRepository(clone $this->package),
));
if ($isFreshInstall) {
$this->suggestedPackagesReporter->addSuggestionsFromPackage($this->package);
}
$this->suggestedPackagesReporter->outputMinimalistic($installedRepo);
}

View File

@ -100,7 +100,7 @@ class SuggestedPackagesReporter
*
* @param int $mode One of the MODE_* constants from this class
* @param InstalledRepository $installedRepo If passed in, suggested packages which are installed already will be skipped
* @param PackageInterface $onlyDependentsOf If passed in, only the suggestions from direct dependents of that package will be shown
* @param PackageInterface $onlyDependentsOf If passed in, only the suggestions from direct dependents of that package, or from the package itself, will be shown
* @return SuggestedPackagesReporter
*/
public function output($mode, InstalledRepository $installedRepo = null, PackageInterface $onlyDependentsOf = null)
@ -168,7 +168,7 @@ class SuggestedPackagesReporter
* Output number of new suggested packages and a hint to use suggest command.
*
* @param InstalledRepository $installedRepo If passed in, suggested packages which are installed already will be skipped
* @param PackageInterface $onlyDependentsOf If passed in, only the suggestions from direct dependents of that package will be shown
* @param PackageInterface $onlyDependentsOf If passed in, only the suggestions from direct dependents of that package, or from the package itself, will be shown
* @return SuggestedPackagesReporter
*/
public function outputMinimalistic(InstalledRepository $installedRepo = null, PackageInterface $onlyDependentsOf = null)
@ -183,7 +183,7 @@ class SuggestedPackagesReporter
/**
* @param InstalledRepository $installedRepo If passed in, suggested packages which are installed already will be skipped
* @param PackageInterface $onlyDependentsOf If passed in, only the suggestions from direct dependents of that package will be shown
* @param PackageInterface $onlyDependentsOf If passed in, only the suggestions from direct dependents of that package, or from the package itself, will be shown
* @return array[]
*/
private function getFilteredSuggestions(InstalledRepository $installedRepo = null, PackageInterface $onlyDependentsOf = null)
@ -204,6 +204,7 @@ class SuggestedPackagesReporter
$sourceFilter = array_map(function ($link) {
return $link->getTarget();
}, array_merge($onlyDependentsOf->getRequires(), $onlyDependentsOf->getDevRequires()));
$sourceFilter[] = $onlyDependentsOf->getName();
}
$suggestions = array();