From 44e76e06fcbe905bf22784b54848584c1a37de0c Mon Sep 17 00:00:00 2001 From: Jordi Boggiano Date: Sun, 19 Feb 2012 19:00:12 +0100 Subject: [PATCH] Refactor repositories configuration --- src/Composer/Factory.php | 9 ++++++++- src/Composer/Package/Loader/RootPackageLoader.php | 11 +++++++---- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/Composer/Factory.php b/src/Composer/Factory.php index e4c81e824..2bbbded74 100644 --- a/src/Composer/Factory.php +++ b/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); } diff --git a/src/Composer/Package/Loader/RootPackageLoader.php b/src/Composer/Package/Loader/RootPackageLoader.php index 294dd3f42..bd0848a0e 100644 --- a/src/Composer/Package/Loader/RootPackageLoader.php +++ b/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']);