function SuggestsCommand::execute
Overrides Command::execute
File
-
vendor/
composer/ composer/ src/ Composer/ Command/ SuggestsCommand.php, line 52
Class
Namespace
Composer\CommandCode
protected function execute(InputInterface $input, OutputInterface $output) : int {
$composer = $this->requireComposer();
$installedRepos = [
new RootPackageRepository(clone $composer->getPackage()),
];
$locker = $composer->getLocker();
if ($locker->isLocked()) {
$installedRepos[] = new PlatformRepository([], $locker->getPlatformOverrides());
$installedRepos[] = $locker->getLockedRepository(!$input->getOption('no-dev'));
}
else {
$installedRepos[] = new PlatformRepository([], $composer->getConfig()
->get('platform'));
$installedRepos[] = $composer->getRepositoryManager()
->getLocalRepository();
}
$installedRepo = new InstalledRepository($installedRepos);
$reporter = new SuggestedPackagesReporter($this->getIO());
$filter = $input->getArgument('packages');
$packages = $installedRepo->getPackages();
$packages[] = $composer->getPackage();
foreach ($packages as $package) {
if (!empty($filter) && !in_array($package->getName(), $filter)) {
continue;
}
$reporter->addSuggestionsFromPackage($package);
}
// Determine output mode, default is by-package
$mode = SuggestedPackagesReporter::MODE_BY_PACKAGE;
// if by-suggestion is given we override the default
if ($input->getOption('by-suggestion')) {
$mode = SuggestedPackagesReporter::MODE_BY_SUGGESTION;
}
// unless by-package is also present then we enable both
if ($input->getOption('by-package')) {
$mode |= SuggestedPackagesReporter::MODE_BY_PACKAGE;
}
// list is exclusive and overrides everything else
if ($input->getOption('list')) {
$mode = SuggestedPackagesReporter::MODE_LIST;
}
$reporter->output($mode, $installedRepo, empty($filter) && !$input->getOption('all') ? $composer->getPackage() : null);
return 0;
}