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

Breadcrumb

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

function BaseDependencyCommand::printTree

Recursively prints a tree of the selected results.

Parameters

array{PackageInterface, Link, array<mixed>|false}[] $results Results to be printed at this level.:

string $prefix Prefix of the current tree level.:

int $level Current level of recursion.:

1 call to BaseDependencyCommand::printTree()
BaseDependencyCommand::doExecute in vendor/composer/composer/src/Composer/Command/BaseDependencyCommand.php
Execute the command.

File

vendor/composer/composer/src/Composer/Command/BaseDependencyCommand.php, line 261

Class

BaseDependencyCommand
Base implementation for commands mapping dependency relationships.

Namespace

Composer\Command

Code

protected function printTree(array $results, string $prefix = '', int $level = 1) : void {
    $count = count($results);
    $idx = 0;
    foreach ($results as $result) {
        [
            $package,
            $link,
            $children,
        ] = $result;
        $color = $this->colors[$level % count($this->colors)];
        $prevColor = $this->colors[($level - 1) % count($this->colors)];
        $isLast = ++$idx === $count;
        $versionText = $package->getPrettyVersion() === RootPackage::DEFAULT_PRETTY_VERSION ? '' : $package->getPrettyVersion();
        $packageUrl = PackageInfo::getViewSourceOrHomepageUrl($package);
        $nameWithLink = $packageUrl !== null ? '<href=' . OutputFormatter::escape($packageUrl) . '>' . $package->getPrettyName() . '</>' : $package->getPrettyName();
        $packageText = rtrim(sprintf('<%s>%s</%1$s> %s', $color, $nameWithLink, $versionText));
        $linkText = sprintf('%s <%s>%s</%2$s> %s', $link->getDescription(), $prevColor, $link->getTarget(), $link->getPrettyConstraint());
        $circularWarn = $children === false ? '(circular dependency aborted here)' : '';
        $this->writeTreeLine(rtrim(sprintf("%s%s%s (%s) %s", $prefix, $isLast ? '└──' : '├──', $packageText, $linkText, $circularWarn)));
        if (is_array($children)) {
            $this->printTree($children, $prefix . ($isLast ? '   ' : '│  '), $level + 1);
        }
    }
}
RSS feed
Powered by Drupal