public function getInstallPath(Package $package) { if (isset($this->installPaths[$package->getName()])) { return $this->installPaths[$package->getName()]; } return $this->tempDir . '/' . basename($package->getName()); }
/** * Tests memory package naming semantics * @dataProvider providerVersioningSchemes */ public function testPackageHasExpectedNamingSemantics($name, $version) { $versionParser = new VersionParser(); $normVersion = $versionParser->normalize($version); $package = new Package($name, $normVersion, $version); $this->assertEquals(strtolower($name), $package->getName()); }
/** * Get a simple copy of the package. * * @return Package */ public function getPackageCopy() { $copy = new Package($this->package->getName(), $this->package->getVersion(), $this->package->getPrettyVersion()); $copy->setType($this->package->getType()); $copy->setExtra($this->package->getExtra()); return $copy; }
public function testGetPackageCopy() { $this->initJob([], $this->atLeastOnce()); $this->package->expects($this->atLeastOnce())->method('getName')->will($this->returnValue('foo/bar')); $this->package->expects($this->atLeastOnce())->method('getVersion')->will($this->returnValue('1.0.0')); $this->package->expects($this->atLeastOnce())->method('getPrettyVersion')->will($this->returnValue('1')); $this->package->expects($this->atLeastOnce())->method('getType')->will($this->returnValue('lib')); $copy = $this->job->getPackageCopy(); // test $this->assertInstanceOf('\\Composer\\Package\\Package', $copy); $this->assertEquals($this->package->getName(), $copy->getName()); $this->assertEquals($this->package->getVersion(), $copy->getVersion()); $this->assertEquals($this->package->getPrettyVersion(), $copy->getPrettyVersion()); $this->assertEquals($this->package->getType(), $copy->getType()); $this->assertEquals($this->package->getExtra(), $copy->getExtra()); }
public function testVendorDirExcludedFromWorkingDir() { $workingDir = $this->vendorDir . '/working-dir'; $vendorDir = $workingDir . '/../vendor'; $this->fs->ensureDirectoryExists($workingDir); chdir($workingDir); $package = new Package('a', '1.0', '1.0'); $package->setAutoload(array('psr-0' => array('Foo' => 'src'), 'psr-4' => array('Acme\\Foo\\' => 'src-psr4'), 'classmap' => array('classmap'), 'files' => array('test.php'))); $vendorPackage = new Package('b/b', '1.0', '1.0'); $vendorPackage->setAutoload(array('psr-0' => array('Bar' => 'lib'), 'psr-4' => array('Acme\\Bar\\' => 'lib-psr4'), 'classmap' => array('classmaps'), 'files' => array('bootstrap.php'))); $this->repository->expects($this->once())->method('getCanonicalPackages')->will($this->returnValue(array($vendorPackage))); $im = $this->getMockBuilder('Composer\\Installer\\InstallationManager')->disableOriginalConstructor()->getMock(); $im->expects($this->any())->method('getInstallPath')->will($this->returnCallback(function ($package) use($vendorDir) { $targetDir = $package->getTargetDir(); return $vendorDir . '/' . $package->getName() . ($targetDir ? '/' . $targetDir : ''); })); $this->fs->ensureDirectoryExists($workingDir . '/src/Foo'); $this->fs->ensureDirectoryExists($workingDir . '/classmap'); $this->fs->ensureDirectoryExists($vendorDir . '/composer'); $this->fs->ensureDirectoryExists($vendorDir . '/b/b/lib/Bar'); $this->fs->ensureDirectoryExists($vendorDir . '/b/b/classmaps'); file_put_contents($workingDir . '/src/Foo/Bar.php', '<?php namespace Foo; class Bar {}'); file_put_contents($workingDir . '/classmap/classes.php', '<?php namespace Foo; class Foo {}'); file_put_contents($workingDir . '/test.php', '<?php class Foo {}'); file_put_contents($vendorDir . '/b/b/lib/Bar/Foo.php', '<?php namespace Bar; class Foo {}'); file_put_contents($vendorDir . '/b/b/classmaps/classes.php', '<?php namespace Bar; class Bar {}'); file_put_contents($vendorDir . '/b/b/bootstrap.php', '<?php class Bar {}'); $oldVendorDir = $this->vendorDir; $this->vendorDir = $vendorDir; $this->generator->dump($this->config, $this->repository, $package, $im, 'composer', true, '_13'); $this->vendorDir = $oldVendorDir; $expectedNamespace = <<<'EOF' <?php // autoload_namespaces.php @generated by Composer $vendorDir = dirname(dirname(__FILE__)); $baseDir = dirname($vendorDir).'/working-dir'; return array( 'Foo' => array($baseDir . '/src'), 'Bar' => array($vendorDir . '/b/b/lib'), ); EOF; $expectedPsr4 = <<<'EOF' <?php // autoload_psr4.php @generated by Composer $vendorDir = dirname(dirname(__FILE__)); $baseDir = dirname($vendorDir).'/working-dir'; return array( 'Acme\\Foo\\' => array($baseDir . '/src-psr4'), 'Acme\\Bar\\' => array($vendorDir . '/b/b/lib-psr4'), ); EOF; $expectedClassmap = <<<'EOF' <?php // autoload_classmap.php @generated by Composer $vendorDir = dirname(dirname(__FILE__)); $baseDir = dirname($vendorDir).'/working-dir'; return array( 'Bar\\Bar' => $vendorDir . '/b/b/classmaps/classes.php', 'Bar\\Foo' => $vendorDir . '/b/b/lib/Bar/Foo.php', 'Foo\\Bar' => $baseDir . '/src/Foo/Bar.php', 'Foo\\Foo' => $baseDir . '/classmap/classes.php', ); EOF; $this->assertEquals($expectedNamespace, file_get_contents($vendorDir . '/composer/autoload_namespaces.php')); $this->assertEquals($expectedPsr4, file_get_contents($vendorDir . '/composer/autoload_psr4.php')); $this->assertEquals($expectedClassmap, file_get_contents($vendorDir . '/composer/autoload_classmap.php')); $this->assertContains("\n \$vendorDir . '/b/b/bootstrap.php',\n", file_get_contents($vendorDir . '/composer/autoload_files.php')); $this->assertContains("\n \$baseDir . '/test.php',\n", file_get_contents($vendorDir . '/composer/autoload_files.php')); }
/** * Add plugin from package. * * @param ComposerPackage $package */ protected function addPackage(ComposerPackage $package) { $plugin = $this->rep->find($package->getName()); // create new plugin if not exists if (!$plugin) { $plugin = new Plugin(); $plugin->setName($package->getName()); } list($vendor, $package) = explode('/', $plugin->getName()); try { $data = $this->client->getPlugin($vendor, $package); $plugin->setTitle($data['title'])->setDescription($data['description']); if ($data['logo']) { $this->downloader->entity($data['logo'], $plugin, true); } } catch (\Exception $e) { // is not a critical error } $this->em->persist($plugin); $this->em->flush(); }
/** * Creates or update a package in MongoDB from the Package passed in parameter. * * @param Package $package * @return array */ public function createOrUpdatePackage(Package $package) { $packageVersion = $this->get($package->getName(), $package->getPrettyVersion()); if (!$packageVersion) { $packageVersion = ["packageName" => $package->getName(), "packageVersion" => $package->getPrettyVersion()]; } $packageVersion['releaseDate'] = new \MongoDate($package->getReleaseDate()->getTimestamp()); $packageVersion['type'] = $package->getType(); $packageVersion['sourceUrl'] = $package->getSourceUrl(); $packageVersion['realVersion'] = $package->getVersion(); if ($package instanceof CompletePackage) { $packageVersion['description'] = $package->getDescription(); } $this->collection->save($packageVersion); // Boost = 1 + download/10 + favers // TODO: we could improve the score of packages by the number of times they are referred by other packages. $score = 1; if (isset($packageVersion['downloads'])) { $score += $packageVersion['downloads'] / 10; } if (isset($packageVersion['favers'])) { $score += $packageVersion['favers']; } $this->itemDao->applyScore($package->getName(), $score); $this->elasticSearchService->storeItemName($package->getName(), 'package', $score); return $packageVersion; }