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

Breadcrumb

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

function LicensesCommand::execute

Overrides Command::execute

File

vendor/composer/composer/src/Composer/Command/LicensesCommand.php, line 54

Class

LicensesCommand
@author BenoƮt Merlet <benoit.merlet@gmail.com>

Namespace

Composer\Command

Code

protected function execute(InputInterface $input, OutputInterface $output) : int {
    $composer = $this->requireComposer();
    $commandEvent = new CommandEvent(PluginEvents::COMMAND, 'licenses', $input, $output);
    $composer->getEventDispatcher()
        ->dispatch($commandEvent->getName(), $commandEvent);
    $root = $composer->getPackage();
    $repo = $composer->getRepositoryManager()
        ->getLocalRepository();
    if ($input->getOption('no-dev')) {
        $packages = RepositoryUtils::filterRequiredPackages($repo->getPackages(), $root);
    }
    else {
        $packages = $repo->getPackages();
    }
    $packages = PackageSorter::sortPackagesAlphabetically($packages);
    $io = $this->getIO();
    switch ($format = $input->getOption('format')) {
        case 'text':
            $io->write('Name: <comment>' . $root->getPrettyName() . '</comment>');
            $io->write('Version: <comment>' . $root->getFullPrettyVersion() . '</comment>');
            $io->write('Licenses: <comment>' . (implode(', ', $root->getLicense()) ?: 'none') . '</comment>');
            $io->write('Dependencies:');
            $io->write('');
            $table = new Table($output);
            $table->setStyle('compact');
            $table->setHeaders([
                'Name',
                'Version',
                'Licenses',
            ]);
            foreach ($packages as $package) {
                $link = PackageInfo::getViewSourceOrHomepageUrl($package);
                if ($link !== null) {
                    $name = '<href=' . OutputFormatter::escape($link) . '>' . $package->getPrettyName() . '</>';
                }
                else {
                    $name = $package->getPrettyName();
                }
                $table->addRow([
                    $name,
                    $package->getFullPrettyVersion(),
                    implode(', ', $package instanceof CompletePackageInterface ? $package->getLicense() : []) ?: 'none',
                ]);
            }
            $table->render();
            break;
        case 'json':
            $dependencies = [];
            foreach ($packages as $package) {
                $dependencies[$package->getPrettyName()] = [
                    'version' => $package->getFullPrettyVersion(),
                    'license' => $package instanceof CompletePackageInterface ? $package->getLicense() : [],
                ];
            }
            $io->write(JsonFile::encode([
                'name' => $root->getPrettyName(),
                'version' => $root->getFullPrettyVersion(),
                'license' => $root->getLicense(),
                'dependencies' => $dependencies,
            ]));
            break;
        case 'summary':
            $usedLicenses = [];
            foreach ($packages as $package) {
                $licenses = $package instanceof CompletePackageInterface ? $package->getLicense() : [];
                if (count($licenses) === 0) {
                    $licenses[] = 'none';
                }
                foreach ($licenses as $licenseName) {
                    if (!isset($usedLicenses[$licenseName])) {
                        $usedLicenses[$licenseName] = 0;
                    }
                    $usedLicenses[$licenseName]++;
                }
            }
            // Sort licenses so that the most used license will appear first
            arsort($usedLicenses, SORT_NUMERIC);
            $rows = [];
            foreach ($usedLicenses as $usedLicense => $numberOfDependencies) {
                $rows[] = [
                    $usedLicense,
                    $numberOfDependencies,
                ];
            }
            $symfonyIo = new SymfonyStyle($input, $output);
            $symfonyIo->table([
                'License',
                'Number of dependencies',
            ], $rows);
            break;
        default:
            throw new \RuntimeException(sprintf('Unsupported format "%s".  See help for supported formats.', $format));
    }
    return 0;
}

API Navigation

  • Drupal Core 11.1.x
  • Topics
  • Classes
  • Functions
  • Constants
  • Globals
  • Files
  • Namespaces
  • Deprecated
  • Services
RSS feed
Powered by Drupal