Fix some formatting and prettify the tree, refs #4917
parent
f681dbc51e
commit
d7855d03c7
|
@ -78,8 +78,11 @@ class BaseDependencyCommand extends BaseCommand
|
|||
$pool->addRepository($repository);
|
||||
|
||||
// Parse package name and constraint
|
||||
list($needle, $textConstraint) = array_pad(explode(':', $input->getArgument(self::ARGUMENT_PACKAGE)),
|
||||
2, $input->getArgument(self::ARGUMENT_CONSTRAINT));
|
||||
list($needle, $textConstraint) = array_pad(
|
||||
explode(':', $input->getArgument(self::ARGUMENT_PACKAGE)),
|
||||
2,
|
||||
$input->getArgument(self::ARGUMENT_CONSTRAINT)
|
||||
);
|
||||
|
||||
// Find packages that are or provide the requested package first
|
||||
$packages = $pool->whatProvides($needle);
|
||||
|
@ -118,7 +121,7 @@ class BaseDependencyCommand extends BaseCommand
|
|||
} elseif ($renderTree) {
|
||||
$root = $packages[0];
|
||||
$this->getIO()->write(sprintf('<info>%s</info> %s %s', $root->getPrettyName(), $root->getPrettyVersion(), $root->getDescription()));
|
||||
$this->printTree($output, $results);
|
||||
$this->printTree($results);
|
||||
} else {
|
||||
$this->printTable($output, $results);
|
||||
}
|
||||
|
@ -131,7 +134,7 @@ class BaseDependencyCommand extends BaseCommand
|
|||
* @param OutputInterface $output
|
||||
* @param array $results
|
||||
*/
|
||||
protected function printTable(OutputInterface $output, $results)
|
||||
protected function printTable($output, $results)
|
||||
{
|
||||
$table = array();
|
||||
$doubles = array();
|
||||
|
@ -159,17 +162,19 @@ class BaseDependencyCommand extends BaseCommand
|
|||
|
||||
// Render table
|
||||
$renderer = new Table($output);
|
||||
$renderer->setStyle('compact')->setRows($table)->render();
|
||||
$renderer->setStyle('compact');
|
||||
$renderer->getStyle()->setVerticalBorderChar('');
|
||||
$renderer->getStyle()->setCellRowContentFormat('%s ');
|
||||
$renderer->setRows($table)->render();
|
||||
}
|
||||
|
||||
/**
|
||||
* Recursively prints a tree of the selected results.
|
||||
*
|
||||
* @param OutputInterface $output
|
||||
* @param array $results
|
||||
* @param string $prefix
|
||||
*/
|
||||
protected function printTree(OutputInterface $output, $results, $prefix = '')
|
||||
protected function printTree($results, $prefix = '')
|
||||
{
|
||||
$count = count($results);
|
||||
$idx = 0;
|
||||
|
@ -183,8 +188,18 @@ class BaseDependencyCommand extends BaseCommand
|
|||
$versionText = (strpos($package->getPrettyVersion(), 'No version set') === 0) ? '' : $package->getPrettyVersion();
|
||||
$packageText = rtrim(sprintf('%s %s', $package->getPrettyName(), $versionText));
|
||||
$linkText = implode(' ', array($link->getDescription(), $link->getTarget(), $link->getPrettyConstraint()));
|
||||
$output->write(sprintf("%s%s %s (%s)\n", $prefix, $isLast ? '`-' : '|-', $packageText, $linkText));
|
||||
$this->printTree($output, $children, $prefix . ($isLast ? ' ' : '| '));
|
||||
$this->writeTreeLine(sprintf("%s%s%s (%s)", $prefix, $isLast ? '└──' : '├──', $packageText, $linkText));
|
||||
$this->printTree($children, $prefix . ($isLast ? ' ' : '│ '));
|
||||
}
|
||||
}
|
||||
|
||||
private function writeTreeLine($line)
|
||||
{
|
||||
$io = $this->getIO();
|
||||
if (!$io->isDecorated()) {
|
||||
$line = str_replace(array('└', '├', '──', '│'), array('`-', '|-', '-', '|'), $line);
|
||||
}
|
||||
|
||||
$io->write($line);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -137,7 +137,7 @@ EOT
|
|||
}
|
||||
|
||||
if ($input->getOption('tree')) {
|
||||
$this->displayPackageTree($package, $installedRepo, $repos, $output);
|
||||
$this->displayPackageTree($package, $installedRepo, $repos);
|
||||
} else {
|
||||
$this->printMeta($package, $versions, $installedRepo, $repos);
|
||||
$this->printLinks($package, 'requires');
|
||||
|
@ -166,7 +166,7 @@ EOT
|
|||
|
||||
foreach ($installedRepo->getPackages() as $package) {
|
||||
if (in_array($package->getName(), $rootRequires, true)) {
|
||||
$this->displayPackageTree($package, $installedRepo, $repos, $output);
|
||||
$this->displayPackageTree($package, $installedRepo, $repos);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -483,9 +483,8 @@ EOT
|
|||
* @param PackageInterface|string $package
|
||||
* @param RepositoryInterface $installedRepo
|
||||
* @param RepositoryInterface $distantRepos
|
||||
* @param OutputInterface $output
|
||||
*/
|
||||
protected function displayPackageTree(PackageInterface $package, RepositoryInterface $installedRepo, RepositoryInterface $distantRepos, OutputInterface $output)
|
||||
protected function displayPackageTree(PackageInterface $package, RepositoryInterface $installedRepo, RepositoryInterface $distantRepos)
|
||||
{
|
||||
$packagesInTree = array();
|
||||
$packagesInTree[] = $package;
|
||||
|
@ -517,7 +516,7 @@ EOT
|
|||
|
||||
$packagesInTree[] = $requireName;
|
||||
|
||||
$this->displayTree($requireName, $require, $installedRepo, $distantRepos, $packagesInTree, $output, $treeBar, $level + 1);
|
||||
$this->displayTree($requireName, $require, $installedRepo, $distantRepos, $packagesInTree, $treeBar, $level + 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -530,11 +529,10 @@ EOT
|
|||
* @param RepositoryInterface $installedRepo
|
||||
* @param RepositoryInterface $distantRepos
|
||||
* @param array $packagesInTree
|
||||
* @param OutputInterface $output
|
||||
* @param string $previousTreeBar
|
||||
* @param int $level
|
||||
*/
|
||||
protected function displayTree($name, $package, RepositoryInterface $installedRepo, RepositoryInterface $distantRepos, array $packagesInTree, OutputInterface $output, $previousTreeBar = '├', $level = 1)
|
||||
protected function displayTree($name, $package, RepositoryInterface $installedRepo, RepositoryInterface $distantRepos, array $packagesInTree, $previousTreeBar = '├', $level = 1)
|
||||
{
|
||||
$previousTreeBar = str_replace('├', '│', $previousTreeBar);
|
||||
list($package, $versions) = $this->getPackage($installedRepo, $distantRepos, $name, $package->getPrettyConstraint() === 'self.version' ? $package->getConstraint() : $package->getPrettyConstraint());
|
||||
|
@ -556,7 +554,7 @@ EOT
|
|||
$treeBar = str_replace('└', ' ', $treeBar);
|
||||
if (!in_array($requireName, $packagesInTree)) {
|
||||
$packagesInTree[] = $requireName;
|
||||
$this->displayTree($requireName, $require, $installedRepo, $distantRepos, $packagesInTree, $output, $treeBar, $level + 1);
|
||||
$this->displayTree($requireName, $require, $installedRepo, $distantRepos, $packagesInTree, $treeBar, $level + 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -36,7 +36,7 @@ abstract class BaseRepository implements RepositoryInterface
|
|||
*/
|
||||
public function getDependents($needle, $constraint = null, $invert = false, $recurse = true)
|
||||
{
|
||||
$needles = is_array($needle) ? $needle : array($needle);
|
||||
$needles = (array) $needle;
|
||||
$results = array();
|
||||
|
||||
// Loop over all currently installed packages.
|
||||
|
@ -58,13 +58,16 @@ abstract class BaseRepository implements RepositoryInterface
|
|||
foreach ($needles as $needle) {
|
||||
if ($link->getTarget() === $needle) {
|
||||
if (is_null($constraint) || (($link->getConstraint()->matches($constraint) === !$invert))) {
|
||||
$results[$link->getSource()] = array($package, $link, $recurse ? $this->getDependents($link->getSource(), null, false, true) : array());
|
||||
$dependents = $recurse ? $this->getDependents($link->getSource(), null, false, true) : array();
|
||||
$results[$link->getSource()] = array($package, $link, $dependents);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ksort($results);
|
||||
|
||||
return $results;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue