Browse Source

Prevent CompositeRepository instances from being nested

Jordi Boggiano 12 years ago
parent
commit
1760b1e093
1 changed files with 11 additions and 2 deletions
  1. 11 2
      src/Composer/Repository/CompositeRepository.php

+ 11 - 2
src/Composer/Repository/CompositeRepository.php

@@ -33,7 +33,10 @@ class CompositeRepository implements RepositoryInterface
      */
     public function __construct(array $repositories)
     {
-        $this->repositories = $repositories;
+        $this->repositories = array();
+        foreach ($repositories as $repo) {
+            $this->addRepository($repo);
+        }
     }
 
     /**
@@ -150,6 +153,12 @@ class CompositeRepository implements RepositoryInterface
      */
     public function addRepository(RepositoryInterface $repository)
     {
-        $this->repositories[] = $repository;
+        if ($repository instanceof self) {
+            foreach ($repository->getRepositories() as $repo) {
+                $this->addRepository($repo);
+            }
+        } else {
+            $this->repositories[] = $repository;
+        }
     }
 }