ソースを参照

make package option of packagist:update and packagist:index an optional arg

Igor Wiedler 13 年 前
コミット
85932bd6c2

+ 23 - 14
src/Packagist/WebBundle/Command/IndexPackagesCommand.php

@@ -12,9 +12,12 @@
 
 namespace Packagist\WebBundle\Command;
 
+use Packagist\WebBundle\Entity\Package;
+
 use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand;
 use Symfony\Component\Console\Input\InputInterface;
 use Symfony\Component\Console\Input\InputOption;
+use Symfony\Component\Console\Input\InputArgument;
 use Symfony\Component\Console\Output\OutputInterface;
 
 /**
@@ -31,7 +34,7 @@ class IndexPackagesCommand extends ContainerAwareCommand
             ->setName('packagist:index')
             ->setDefinition(array(
                 new InputOption('force', null, InputOption::VALUE_NONE, 'Force a re-indexing of all packages'),
-                new InputOption('package', null, InputOption::VALUE_NONE, 'Package name to index'),
+                new InputArgument('package', InputArgument::OPTIONAL, 'Package name to index'),
             ))
             ->setDescription('Indexes packages')
             ->setHelp(<<<EOF
@@ -48,7 +51,7 @@ EOF
     {
         $verbose = $input->getOption('verbose');
         $force = $input->getOption('force');
-        $package = $input->getOption('package');
+        $package = $input->getArgument('package');
 
         $doctrine = $this->getContainer()->get('doctrine');
         $solarium = $this->getContainer()->get('solarium.client');
@@ -72,7 +75,7 @@ EOF
         }
 
         if ($package) {
-            $packages = array($doctrine->getRepository('PackagistWebBundle:Package')->findOneByName($input->getOption('package')));
+            $packages = array($doctrine->getRepository('PackagistWebBundle:Package')->findOneByName($package));
         } elseif ($force) {
             $packages = $doctrine->getRepository('PackagistWebBundle:Package')->findAll();
         } else {
@@ -88,17 +91,8 @@ EOF
                 $update = $solarium->createUpdate();
 
                 $document = $update->createDocument();
-                $document->id = $package->getId();
-                $document->name = $package->getName();
-                $document->description = $package->getDescription();
-
-                $tags = array();
-                foreach ($package->getVersions() as $version) {
-                    foreach ($version->getTags() as $tag) {
-                        $tags[] = $tag->getName();
-                    }
-                }
-                $document->tags = array_unique($tags);
+
+                $this->updateDocumentFromPackage($document, $package);
 
                 $update->addDocument($document);
                 $update->addCommit();
@@ -114,4 +108,19 @@ EOF
             }
         }
     }
+
+    private function updateDocumentFromPackage(\Solarium_Document_ReadWrite $document, Package $package)
+    {
+        $document->id = $package->getId();
+        $document->name = $package->getName();
+        $document->description = $package->getDescription();
+
+        $tags = array();
+        foreach ($package->getVersions() as $version) {
+            foreach ($version->getTags() as $tag) {
+                $tags[] = $tag->getName();
+            }
+        }
+        $document->tags = array_unique($tags);
+    }
 }

+ 9 - 6
src/Packagist/WebBundle/Command/UpdatePackagesCommand.php

@@ -16,6 +16,7 @@ use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand;
 use Symfony\Bridge\Doctrine\RegistryInterface;
 use Symfony\Component\Console\Input\InputInterface;
 use Symfony\Component\Console\Input\InputOption;
+use Symfony\Component\Console\Input\InputArgument;
 use Symfony\Component\Console\Output\OutputInterface;
 use Symfony\Component\HttpKernel\KernelInterface;
 use Symfony\Component\Finder\Finder;
@@ -53,7 +54,7 @@ class UpdatePackagesCommand extends ContainerAwareCommand
             ->setName('packagist:update')
             ->setDefinition(array(
                 new InputOption('force', null, InputOption::VALUE_NONE, 'Force a re-crawl of all packages'),
-                new InputOption('package', null, InputOption::VALUE_NONE, 'Package name to update (implicitly enables --force)'),
+                new InputArgument('package', InputArgument::OPTIONAL, 'Package name to update (implicitly enables --force)'),
             ))
             ->setDescription('Updates packages')
             ->setHelp(<<<EOF
@@ -69,15 +70,17 @@ EOF
     protected function execute(InputInterface $input, OutputInterface $output)
     {
         $verbose = $input->getOption('verbose');
-        $doctrine = $this->getContainer()->get('doctrine');
+        $force = $input->getOption('force');
+        $package = $input->getArgument('package');
 
+        $doctrine = $this->getContainer()->get('doctrine');
         $logger = $this->getContainer()->get('logger');
 
         $this->versionParser = new VersionParser;
 
-        if ($input->getOption('package')) {
-            $packages = array($doctrine->getRepository('PackagistWebBundle:Package')->findOneByName($input->getOption('package')));
-        } elseif ($input->getOption('force')) {
+        if ($package) {
+            $packages = array($doctrine->getRepository('PackagistWebBundle:Package')->findOneByName($package));
+        } elseif ($force) {
             $packages = $doctrine->getRepository('PackagistWebBundle:Package')->findAll();
         } else {
             $packages = $doctrine->getRepository('PackagistWebBundle:Package')->getStalePackages();
@@ -98,7 +101,7 @@ EOF
 
             try {
                 // clear versions to force a clean reloading if --force is enabled
-                if ($input->getOption('force')) {
+                if ($force) {
                     $versionRepo = $doctrine->getRepository('PackagistWebBundle:Version');
                     foreach ($package->getVersions() as $version) {
                         $versionRepo->remove($version);