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\CommandCode
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);
}
}
}