Prechádzať zdrojové kódy

Merge pull request #330 from Seldaek/repositories

[BC Break] Refactor repositories configuration
Nils Adermann 13 rokov pred
rodič
commit
03a9e0dfee

+ 8 - 1
src/Composer/Factory.php

@@ -51,6 +51,7 @@ class Factory
         // Configuration defaults
         $composerConfig = array(
             'vendor-dir' => 'vendor',
+            'repositories' => array(),
         );
 
         $packageConfig = $file->read();
@@ -71,7 +72,13 @@ class Factory
         $rm = $this->createRepositoryManager($io);
 
         // load default repository unless it's explicitly disabled
-        if (!isset($packageConfig['repositories']['packagist']) || $packageConfig['repositories']['packagist'] !== false) {
+        $loadPackagist = true;
+        foreach ($packageConfig['repositories'] as $repo) {
+            if (isset($repo['packagist']) && $repo['packagist'] === false) {
+                $loadPackagist = false;
+            }
+        }
+        if ($loadPackagist) {
             $this->addPackagistRepository($rm);
         }
 

+ 7 - 4
src/Composer/Package/Loader/RootPackageLoader.php

@@ -44,14 +44,17 @@ class RootPackageLoader extends ArrayLoader
         $package = parent::load($config);
 
         if (isset($config['repositories'])) {
-            foreach ($config['repositories'] as $repoName => $repo) {
-                if (false === $repo && 'packagist' === $repoName) {
+            foreach ($config['repositories'] as $index => $repo) {
+                if (isset($repo['packagist']) && $repo['packagist'] === false) {
                     continue;
                 }
                 if (!is_array($repo)) {
-                    throw new \UnexpectedValueException('Repository '.$repoName.' in '.$package->getPrettyName().' '.$package->getVersion().' should be an array, '.gettype($repo).' given');
+                    throw new \UnexpectedValueException('Repository '.$index.' should be an array, '.gettype($repo).' given');
                 }
-                $repository = $this->manager->createRepository(key($repo), current($repo));
+                if (!isset($repo['type'])) {
+                    throw new \UnexpectedValueException('Repository '.$index.' must have a type defined');
+                }
+                $repository = $this->manager->createRepository($repo['type'], $repo);
                 $this->manager->addRepository($repository);
             }
             $package->setRepositories($config['repositories']);

+ 1 - 1
src/Composer/Repository/PackageRepository.php

@@ -33,7 +33,7 @@ class PackageRepository extends ArrayRepository
      */
     public function __construct(array $config)
     {
-        $this->config = $config;
+        $this->config = $config['package'];
     }
 
     /**