Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x
  2. SuggestsCommand.php

function SuggestsCommand::execute

Overrides Command::execute

File

vendor/composer/composer/src/Composer/Command/SuggestsCommand.php, line 52

Class

SuggestsCommand

Namespace

Composer\Command

Code

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;
}
RSS feed
Powered by Drupal