Example #1
0
 public function testLoadVersions()
 {
     $expected = array('0.6.0' => true, '1.0.0' => true, '1.0.x-dev' => true, '1.1.x-dev' => true, 'dev-feature-b' => true, 'dev-feature-a' => true, 'dev-master' => true);
     $repo = new VcsRepository(array('url' => self::$gitRepo, 'type' => 'vcs'), new NullIO());
     $packages = $repo->getPackages();
     $dumper = new ArrayDumper();
     foreach ($packages as $package) {
         if (isset($expected[$package->getPrettyVersion()])) {
             unset($expected[$package->getPrettyVersion()]);
         } else {
             $this->fail('Unexpected version ' . $package->getPrettyVersion() . ' in ' . json_encode($dumper->dump($package)));
         }
     }
     $this->assertEmpty($expected, 'Missing versions: ' . implode(', ', array_keys($expected)));
 }
 /**
  * {@inheritdoc}
  */
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $verbose = $input->getOption('verbose');
     $force = $input->getOption('force');
     $package = $input->getArgument('package');
     $doctrine = $this->getContainer()->get('doctrine');
     $logger = $this->getContainer()->get('logger');
     $this->versionParser = new VersionParser();
     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();
     }
     $start = new \DateTime();
     foreach ($packages as $package) {
         if ($verbose) {
             $output->writeln('Importing ' . $package->getRepository());
         }
         try {
             $repository = new VcsRepository(array('url' => $package->getRepository()), new NullIO());
             if ($verbose) {
                 $repository->setDebug(true);
             }
             $versions = $repository->getPackages();
             usort($versions, function ($a, $b) {
                 return version_compare($a->getVersion(), $b->getVersion());
             });
             // clear existing versions to force a clean reloading if --force is enabled
             if ($force) {
                 $versionRepo = $doctrine->getRepository('PackagistWebBundle:Version');
                 foreach ($package->getVersions() as $version) {
                     $versionRepo->remove($version);
                 }
                 $doctrine->getEntityManager()->flush();
                 $doctrine->getEntityManager()->refresh($package);
             }
             foreach ($versions as $version) {
                 if ($verbose) {
                     $output->writeln('Storing ' . $version->getPrettyVersion() . ' (' . $version->getVersion() . ')');
                 }
                 $this->updateInformation($output, $doctrine, $package, $version);
                 $doctrine->getEntityManager()->flush();
             }
             // remove outdated -dev versions
             foreach ($package->getVersions() as $version) {
                 if ($version->getDevelopment() && $version->getUpdatedAt() < $start) {
                     if ($verbose) {
                         $output->writeln('Deleting stale version: ' . $version->getVersion());
                     }
                     $doctrine->getRepository('PackagistWebBundle:Version')->remove($version);
                 }
             }
             $package->setUpdatedAt(new \DateTime());
             $package->setCrawledAt(new \DateTime());
             $doctrine->getEntityManager()->flush();
         } catch (\Exception $e) {
             $output->writeln('<error>Exception: ' . $e->getMessage() . ', skipping package ' . $package->getName() . '.</error>');
         }
     }
 }