From 92ad33d11e9fdae11092d8ebc00aa5a30e9163f6 Mon Sep 17 00:00:00 2001 From: Jordi Boggiano Date: Fri, 27 Nov 2015 00:38:37 +0000 Subject: [PATCH] Undo some invalid merges and simplify code a little bit, refs #2600 --- src/Composer/Command/ShowCommand.php | 87 ++++++++++++++-------------- 1 file changed, 44 insertions(+), 43 deletions(-) diff --git a/src/Composer/Command/ShowCommand.php b/src/Composer/Command/ShowCommand.php index 8fc2aee64..201c8a002 100644 --- a/src/Composer/Command/ShowCommand.php +++ b/src/Composer/Command/ShowCommand.php @@ -19,6 +19,7 @@ use Composer\Package\CompletePackageInterface; use Composer\Semver\VersionParser; use Composer\Plugin\CommandEvent; use Composer\Plugin\PluginEvents; +use Composer\Package\PackageInterface; use Symfony\Component\Console\Formatter\OutputFormatterStyle; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputArgument; @@ -70,7 +71,9 @@ EOT protected function execute(InputInterface $input, OutputInterface $output) { $this->versionParser = new VersionParser; - $this->initStyles($output); + if ($input->getOption('tree')) { + $this->initStyles($output); + } // init repos $platformRepo = new PlatformRepository; @@ -104,10 +107,6 @@ EOT $repos = new CompositeRepository(array_merge(array($installedRepo), $defaultRepos)); } - if ($input->getOption('tree')) { - $repos = new CompositeRepository(array_merge(array($installedRepo), $composer->getRepositoryManager()->getRepositories())); - } - if ($composer) { $commandEvent = new CommandEvent(PluginEvents::COMMAND, 'show', $input, $output); $composer->getEventDispatcher()->dispatch($commandEvent->getName(), $commandEvent); @@ -142,23 +141,33 @@ EOT $this->printLinks($package, 'conflicts'); $this->printLinks($package, 'replaces'); } - $this->printLinks($package, 'provides'); - $this->printLinks($package, 'conflicts'); - $this->printLinks($package, 'replaces'); return; } - // list packages - $packages = array(); + // show tree view if requested + if ($input->getOption('tree')) { + if (!$input->getOption('installed')) { + $io->writeError('The --tree (-t) option is only usable in combination with --installed (-t) or by passing a single package name to show'); + return 1; + } + + foreach ($installedRepo->getPackages() as $package) { + $this->displayPackageTree($package, $installedRepo, $repos, $output); + } + + return 0; + } - $allRepos = $repos; if ($repos instanceof CompositeRepository) { $repos = $repos->getRepositories(); } elseif (!is_array($repos)) { $repos = array($repos); } + // list packages + $packages = array(); + foreach ($repos as $repo) { if ($repo === $platformRepo) { $type = 'platform:'; @@ -186,11 +195,11 @@ EOT } } - $tree = !$input->getOption('platform') && !$input->getOption('installed') && !$input->getOption('available'); - $indent = $tree && $input->getOption('installed') ? ' ' : ''; + $showAllTypes = !$input->getOption('platform') && !$input->getOption('installed') && !$input->getOption('available'); + $indent = $showAllTypes ? ' ' : ''; foreach (array('platform:' => true, 'available:' => false, 'installed:' => true) as $type => $showVersion) { if (isset($packages[$type])) { - if ($tree) { + if ($showAllTypes) { $io->write($type); } ksort($packages[$type]); @@ -223,36 +232,32 @@ EOT $writeVersion = !$input->getOption('name-only') && !$input->getOption('path') && $showVersion && ($nameLength + $versionLength + 3 <= $width); $writeDescription = !$input->getOption('name-only') && !$input->getOption('path') && ($nameLength + ($showVersion ? $versionLength : 0) + 24 <= $width); foreach ($packages[$type] as $package) { - if ($input->getOption('tree') && $input->getOption('installed')) { - $this->displayPackageTree($package, $installedRepo, $allRepos, $output); - } else { - if (is_object($package)) { - $output->write($indent . str_pad($package->getPrettyName(), $nameLength, ' '), false); + if (is_object($package)) { + $output->write($indent . str_pad($package->getPrettyName(), $nameLength, ' '), false); - if ($writeVersion) { - $output->write(' ' . str_pad($package->getFullPrettyVersion(), $versionLength, ' '), false); - } + if ($writeVersion) { + $output->write(' ' . str_pad($package->getFullPrettyVersion(), $versionLength, ' '), false); + } - if ($writeDescription) { - $description = strtok($package->getDescription(), "\r\n"); - $remaining = $width - $nameLength - $versionLength - 4; - if (strlen($description) > $remaining) { - $description = substr($description, 0, $remaining - 3) . '...'; - } - $output->write(' ' . $description); + if ($writeDescription) { + $description = strtok($package->getDescription(), "\r\n"); + $remaining = $width - $nameLength - $versionLength - 4; + if (strlen($description) > $remaining) { + $description = substr($description, 0, $remaining - 3) . '...'; } - } else { - $output->write($indent . $package); + $output->write(' ' . $description); } if ($writePath) { $path = strtok(realpath($composer->getInstallationManager()->getInstallPath($package)), "\r\n"); $output->write(' ' . $path); } + } else { + $output->write($indent . $package); } $io->write(''); } - if ($tree) { + if ($showAllTypes) { $io->write(''); } } @@ -447,9 +452,9 @@ EOT $this->colors = array( 'green', 'yellow', - 'blue', - 'magenta', 'cyan', + 'magenta', + 'blue', ); foreach ($this->colors as $color) { @@ -466,18 +471,14 @@ EOT * @param RepositoryInterface $distantRepos * @param OutputInterface $output */ - protected function displayPackageTree($package, RepositoryInterface $installedRepo, RepositoryInterface $distantRepos, OutputInterface $output) + protected function displayPackageTree(PackageInterface $package, RepositoryInterface $installedRepo, RepositoryInterface $distantRepos, OutputInterface $output) { $packagesInTree = array(); $packagesInTree[] = $package; - if (is_object($package)) { - $output->write(sprintf('%s', $package->getPrettyName())); - $output->write(' ' . $package->getPrettyVersion()); - $output->write(' ' . strtok($package->getDescription(), "\r\n")); - } else { - $output->write(sprintf('%s', $package)); - } + $output->write(sprintf('%s', $package->getPrettyName())); + $output->write(' ' . $package->getPrettyVersion()); + $output->write(' ' . strtok($package->getDescription(), "\r\n")); $output->writeln(''); if (is_object($package)) { @@ -522,7 +523,7 @@ EOT protected function displayTree($name, $package, RepositoryInterface $installedRepo, RepositoryInterface $distantRepos, array $packagesInTree, OutputInterface $output, $previousTreeBar = '├', $level = 1) { $previousTreeBar = str_replace('├', '│', $previousTreeBar); - list($package, $versions) = $this->getPackage($installedRepo, $distantRepos, $name, $package->getPrettyConstraint() == 'self.version' ? $package->getConstraint() : $package->getPrettyConstraint()); + list($package, $versions) = $this->getPackage($installedRepo, $distantRepos, $name, $package->getPrettyConstraint() === 'self.version' ? $package->getConstraint() : $package->getPrettyConstraint()); if (is_object($package)) { $requires = $package->getRequires(); $treeBar = $previousTreeBar . ' ├';