Refactored downloader code and made packagist configuration flexible and validated.

main
Benjamin Eberlei 13 years ago
parent bbf745f3e6
commit 1c67633c70

@ -17,8 +17,7 @@ use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Output\OutputInterface;
use Composer\IO\IOInterface; use Composer\IO\IOInterface;
use Composer\Downloader\DownloadManager; use Composer\Factory;
use Composer\Downloader;
use Composer\Repository\ComposerRepository; use Composer\Repository\ComposerRepository;
use Composer\Installer\ProjectInstaller; use Composer\Installer\ProjectInstaller;
@ -82,9 +81,14 @@ EOT
if ($packagistUrl === null) { if ($packagistUrl === null) {
$sourceRepo = new ComposerRepository(array('url' => 'http://packagist.org')); $sourceRepo = new ComposerRepository(array('url' => 'http://packagist.org'));
} else { } else if (substr($packagistUrl, -5) === ".json") {
$sourceRepo = new FilesystemRepository($packagistUrl);
} else if (strpos($packagistUrl, 'http') === 0) {
$sourceRepo = new ComposerRepository(array('url' => $packagistUrl)); $sourceRepo = new ComposerRepository(array('url' => $packagistUrl));
} else {
throw new \InvalidArgumentException("Invalid Packagist Url given. Has to be a .json file or an http url.");
} }
$package = $sourceRepo->findPackage($packageName, $version); $package = $sourceRepo->findPackage($packageName, $version);
if (!$package) { if (!$package) {
throw new \InvalidArgumentException("Could not find package $packageName with version $version."); throw new \InvalidArgumentException("Could not find package $packageName with version $version.");
@ -106,16 +110,8 @@ EOT
protected function createDownloadManager(IOInterface $io) protected function createDownloadManager(IOInterface $io)
{ {
$dm = new Downloader\DownloadManager(); $factory = new Factory();
$dm->setDownloader('git', new Downloader\GitDownloader($io)); return $factory->createDownloadManager($io);
$dm->setDownloader('svn', new Downloader\SvnDownloader($io));
$dm->setDownloader('hg', new Downloader\HgDownloader($io));
$dm->setDownloader('pear', new Downloader\PearDownloader($io));
$dm->setDownloader('zip', new Downloader\ZipDownloader($io));
$dm->setDownloader('tar', new Downloader\TarDownloader($io));
$dm->setDownloader('phar', new Downloader\PharDownloader($io));
return $dm;
} }
} }

@ -138,7 +138,7 @@ class Factory
$rm->addRepository(new Repository\ComposerRepository(array('url' => 'http://packagist.org'))); $rm->addRepository(new Repository\ComposerRepository(array('url' => 'http://packagist.org')));
} }
protected function createDownloadManager(IOInterface $io) public function createDownloadManager(IOInterface $io)
{ {
$dm = new Downloader\DownloadManager(); $dm = new Downloader\DownloadManager();
$dm->setDownloader('git', new Downloader\GitDownloader($io)); $dm->setDownloader('git', new Downloader\GitDownloader($io));

Loading…
Cancel
Save