diff --git a/src/Composer/Factory.php b/src/Composer/Factory.php index e84750e43..ada425073 100644 --- a/src/Composer/Factory.php +++ b/src/Composer/Factory.php @@ -67,7 +67,7 @@ class Factory $binDir = getenv('COMPOSER_BIN_DIR') ?: $packageConfig['config']['bin-dir']; // initialize repository manager - $rm = $this->createRepositoryManager($io, $vendorDir); + $rm = $this->createRepositoryManager($io); // initialize download manager $dm = $this->createDownloadManager($io); @@ -75,15 +75,17 @@ class Factory // initialize installation manager $im = $this->createInstallationManager($rm, $dm, $vendorDir, $binDir, $io); + // load default repository unless it's explicitly disabled + if (!isset($packageConfig['repositories']['packagist']) || $packageConfig['repositories']['packagist'] !== false) { + $this->addPackagistRepository($rm); + } + + $this->addLocalRepository($rm, $vendorDir); + // load package $loader = new Package\Loader\RootPackageLoader($rm); $package = $loader->load($packageConfig); - // load default repository unless it's explicitly disabled - if (!isset($packageConfig['repositories']['packagist']) || $packageConfig['repositories']['packagist'] !== false) { - $rm->addRepository(new Repository\ComposerRepository(array('url' => 'http://packagist.org'))); - } - // init locker $lockFile = substr($composerFile, -5) === '.json' ? substr($composerFile, 0, -4).'lock' : $composerFile . '.lock'; $locker = new Package\Locker(new JsonFile($lockFile), $rm, md5_file($composerFile)); @@ -102,7 +104,6 @@ class Factory protected function createRepositoryManager(IOInterface $io, $vendorDir) { $rm = new Repository\RepositoryManager($io); - $rm->setLocalRepository(new Repository\FilesystemRepository(new JsonFile($vendorDir.'/.composer/installed.json'))); $rm->setRepositoryClass('composer', 'Composer\Repository\ComposerRepository'); $rm->setRepositoryClass('vcs', 'Composer\Repository\VcsRepository'); $rm->setRepositoryClass('pear', 'Composer\Repository\PearRepository'); @@ -111,6 +112,16 @@ class Factory return $rm; } + protected function addLocalRepository(RepositoryManager $rm, $vendorDir) + { + $rm->setLocalRepository(new Repository\FilesystemRepository(new JsonFile($vendorDir.'/.composer/installed.json'))); + } + + protected function addPackagistRepository(RepositoryManager $rm) + { + $rm->addRepository(new Repository\ComposerRepository(array('url' => 'http://packagist.org'))); + } + protected function createDownloadManager(IOInterface $io) { $dm = new Downloader\DownloadManager();