Ver Fonte

Add --self flag to composer show to see the root package info

Jordi Boggiano há 12 anos atrás
pai
commit
e0edd882c5
1 ficheiros alterados com 10 adições e 3 exclusões
  1. 10 3
      src/Composer/Command/ShowCommand.php

+ 10 - 3
src/Composer/Command/ShowCommand.php

@@ -19,6 +19,7 @@ use Symfony\Component\Console\Input\InputInterface;
 use Symfony\Component\Console\Input\InputArgument;
 use Symfony\Component\Console\Input\InputOption;
 use Symfony\Component\Console\Output\OutputInterface;
+use Composer\Repository\ArrayRepository;
 use Composer\Repository\CompositeRepository;
 use Composer\Repository\PlatformRepository;
 use Composer\Repository\RepositoryInterface;
@@ -39,6 +40,7 @@ class ShowCommand extends Command
                 new InputArgument('version', InputArgument::OPTIONAL, 'Version to inspect'),
                 new InputOption('installed', null, InputOption::VALUE_NONE, 'List installed packages only'),
                 new InputOption('platform', null, InputOption::VALUE_NONE, 'List platform packages only'),
+                new InputOption('self', null, InputOption::VALUE_NONE, 'Show the root package information'),
             ))
             ->setHelp(<<<EOT
 The show command displays detailed information about a package, or
@@ -53,7 +55,10 @@ EOT
     {
         // init repos
         $platformRepo = new PlatformRepository;
-        if ($input->getOption('platform')) {
+        if ($input->getOption('self')) {
+            $package = $this->getComposer(false)->getPackage();
+            $repos = $installedRepo = new ArrayRepository(array($package));
+        } elseif ($input->getOption('platform')) {
             $repos = $installedRepo = $platformRepo;
         } elseif ($input->getOption('installed')) {
             $composer = $this->getComposer();
@@ -70,8 +75,10 @@ EOT
         }
 
         // show single package or single version
-        if ($input->getArgument('package')) {
-            $package = $this->getPackage($input, $output, $installedRepo, $repos);
+        if ($input->getArgument('package') || !empty($package)) {
+            if (empty($package)) {
+                $package = $this->getPackage($input, $output, $installedRepo, $repos);
+            }
             if (!$package) {
                 throw new \InvalidArgumentException('Package '.$input->getArgument('package').' not found');
             }