Просмотр исходного кода

Fix show command, refactor RepositorySet constructor

Jordi Boggiano 5 лет назад
Родитель
Сommit
2f4ea3a463

+ 1 - 1
src/Composer/Command/CreateProjectCommand.php

@@ -311,7 +311,7 @@ EOT
             throw new \InvalidArgumentException('Invalid stability provided ('.$stability.'), must be one of: '.implode(', ', array_keys(BasePackage::$stabilities)));
         }
 
-        $repositorySet = new RepositorySet(array(), array(), $stability);
+        $repositorySet = new RepositorySet($stability);
         $repositorySet->addRepository($sourceRepo);
 
         $phpVersion = null;

+ 1 - 1
src/Composer/Command/InitCommand.php

@@ -693,7 +693,7 @@ EOT
         $key = $minimumStability ?: 'default';
 
         if (!isset($this->repositorySets[$key])) {
-            $this->repositorySets[$key] = $repositorySet = new RepositorySet(array(), array(), $minimumStability ?: $this->getMinimumStability($input));
+            $this->repositorySets[$key] = $repositorySet = new RepositorySet($minimumStability ?: $this->getMinimumStability($input));
             $repositorySet->addRepository($this->getRepos());
         }
 

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

@@ -541,7 +541,8 @@ EOT
         $constraint = is_string($version) ? $this->versionParser->parseConstraints($version) : $version;
 
         $policy = new DefaultPolicy();
-        $repositorySet = new RepositorySet(array(), array(), 'dev');
+        $repositorySet = new RepositorySet('dev');
+        $repositorySet->allowInstalledRepositories();
         $repositorySet->addRepository($repos);
 
         $matchedPackage = null;
@@ -1194,7 +1195,7 @@ EOT
     private function getRepositorySet(Composer $composer)
     {
         if (!$this->repositorySet) {
-            $this->repositorySet = new RepositorySet(array(), array(), $composer->getPackage()->getMinimumStability(), $composer->getPackage()->getStabilityFlags());
+            $this->repositorySet = new RepositorySet($composer->getPackage()->getMinimumStability(), $composer->getPackage()->getStabilityFlags());
             $this->repositorySet->addRepository(new CompositeRepository($composer->getRepositoryManager()->getRepositories()));
         }
 

+ 2 - 2
src/Composer/Installer.php

@@ -719,7 +719,7 @@ class Installer
         $this->fixedRootPackage->setRequires(array());
         $this->fixedRootPackage->setDevRequires(array());
 
-        $repositorySet = new RepositorySet($rootAliases, $this->package->getReferences(), $minimumStability, $stabilityFlags, $rootRequires);
+        $repositorySet = new RepositorySet($minimumStability, $stabilityFlags, $rootAliases, $this->package->getReferences(), $rootRequires);
         $repositorySet->addRepository(new RootPackageRepository(array($this->fixedRootPackage)));
         $repositorySet->addRepository($platformRepo);
         if ($this->additionalFixedRepository) {
@@ -873,7 +873,7 @@ class Installer
             }
         }
 
-        $repositorySet = new RepositorySet(array(), array(), 'dev');
+        $repositorySet = new RepositorySet('dev');
         $repositorySet->addRepository($lockRepo);
 
         $seen = array();

+ 1 - 1
src/Composer/Plugin/PluginManager.php

@@ -158,7 +158,7 @@ class PluginManager
         $localRepo = $this->composer->getRepositoryManager()->getLocalRepository();
         $globalRepo = $this->globalComposer ? $this->globalComposer->getRepositoryManager()->getLocalRepository() : null;
 
-        $repositorySet = new RepositorySet(array(), array(), 'dev');
+        $repositorySet = new RepositorySet('dev');
         $repositorySet->addRepository($localRepo);
         if ($globalRepo) {
             $repositorySet->addRepository($globalRepo);

+ 9 - 2
src/Composer/Repository/RepositorySet.php

@@ -56,8 +56,10 @@ class RepositorySet
 
     /** @var bool */
     private $locked = false;
+    /** @var bool */
+    private $allowInstalledRepositories = false;
 
-    public function __construct(array $rootAliases = array(), array $rootReferences = array(), $minimumStability = 'stable', array $stabilityFlags = array(), array $rootRequires = array())
+    public function __construct($minimumStability = 'stable', array $stabilityFlags = array(), array $rootAliases = array(), array $rootReferences = array(), array $rootRequires = array())
     {
         $this->rootAliases = $rootAliases;
         $this->rootReferences = $rootReferences;
@@ -77,6 +79,11 @@ class RepositorySet
         }
     }
 
+    public function allowInstalledRepositories($allow = true)
+    {
+        $this->allowInstalledRepositories = $allow;
+    }
+
     public function getRootRequires()
     {
         return $this->rootRequires;
@@ -186,7 +193,7 @@ class RepositorySet
         $poolBuilder = new PoolBuilder($this->acceptableStabilities, $this->stabilityFlags, $this->rootAliases, $this->rootReferences);
 
         foreach ($this->repositories as $repo) {
-            if ($repo instanceof InstalledRepositoryInterface) {
+            if ($repo instanceof InstalledRepositoryInterface && !$this->allowInstalledRepositories) {
                 throw new \LogicException('The pool can not accept packages from an installed repository');
             }
         }

+ 3 - 3
tests/Composer/Test/DependencyResolver/DefaultPolicyTest.php

@@ -36,7 +36,7 @@ class DefaultPolicyTest extends TestCase
 
     public function setUp()
     {
-        $this->repositorySet = new RepositorySet(array(), array(), 'dev');
+        $this->repositorySet = new RepositorySet('dev');
         $this->repo = new ArrayRepository;
         $this->repoLocked = new LockArrayRepository;
 
@@ -144,7 +144,7 @@ class DefaultPolicyTest extends TestCase
 
         $this->assertSame($expected, $selected);
 
-        $this->repositorySet = new RepositorySet(array(), array(), 'dev');
+        $this->repositorySet = new RepositorySet('dev');
         $this->repositorySet->addRepository($repo2);
         $this->repositorySet->addRepository($repo1);
 
@@ -250,7 +250,7 @@ class DefaultPolicyTest extends TestCase
         $repo->addPackage($packageA = clone $packageA);
         $repo->addPackage($packageB = clone $packageB);
 
-        $repositorySet = new RepositorySet(array(), array(), 'dev');
+        $repositorySet = new RepositorySet('dev');
         $repositorySet->addRepository($this->repo);
 
         $pool = $this->repositorySet->createPoolForPackages(array('vendor-a/replacer', 'vendor-b/replacer'), $this->repoLocked);

+ 1 - 1
tests/Composer/Test/DependencyResolver/PoolBuilderTest.php

@@ -74,7 +74,7 @@ class PoolBuilderTest extends TestCase
             return $pkg;
         };
 
-        $repositorySet = new RepositorySet($normalizedAliases, array(), $minimumStability, $stabilityFlags);
+        $repositorySet = new RepositorySet($minimumStability, $stabilityFlags, $normalizedAliases);
         $repositorySet->addRepository($repo = new ArrayRepository());
         foreach ($packages as $package) {
             $repo->addPackage($loadPackage($package));

+ 1 - 1
tests/Composer/Test/DependencyResolver/SolverTest.php

@@ -38,7 +38,7 @@ class SolverTest extends TestCase
 
     public function setUp()
     {
-        $this->repoSet = new RepositorySet(array());
+        $this->repoSet = new RepositorySet();
         $this->repo = new ArrayRepository;
         $this->repoLocked = new LockArrayRepository;