diff --git a/src/Composer/Command/ArchiveCommand.php b/src/Composer/Command/ArchiveCommand.php index d7ed722df..03e8600fa 100644 --- a/src/Composer/Command/ArchiveCommand.php +++ b/src/Composer/Command/ArchiveCommand.php @@ -68,7 +68,8 @@ EOT { $config = Factory::createConfig(); $factory = new Factory; - $archiveManager = $factory->createArchiveManager($config); + $downloadManager = $factory->createDownloadManager($io, $config); + $archiveManager = $factory->createArchiveManager($config, $downloadManager); if ($packageName) { $package = $this->selectPackage($io, $packageName, $version); diff --git a/src/Composer/Factory.php b/src/Composer/Factory.php index 441d3fd8a..d51ba8fb0 100644 --- a/src/Composer/Factory.php +++ b/src/Composer/Factory.php @@ -316,6 +316,19 @@ class Factory } $dm = new Downloader\DownloadManager(); + switch ($config->get('preferred-install')) { + case 'dist': + $dm->setPreferDist(true); + break; + case 'source': + $dm->setPreferSource(true); + break; + case 'auto': + default: + // noop + break; + } + $dm->setDownloader('git', new Downloader\GitDownloader($io, $config)); $dm->setDownloader('svn', new Downloader\SvnDownloader($io, $config)); $dm->setDownloader('hg', new Downloader\HgDownloader($io, $config)); diff --git a/src/Composer/Package/Archiver/ArchiveManager.php b/src/Composer/Package/Archiver/ArchiveManager.php index 383f83b72..6c6be7fda 100644 --- a/src/Composer/Package/Archiver/ArchiveManager.php +++ b/src/Composer/Package/Archiver/ArchiveManager.php @@ -138,7 +138,7 @@ class ArchiveManager $filesystem->ensureDirectoryExists($sourcePath); // Download sources - $this->downloadManager->download($package, $sourcePath, true); + $this->downloadManager->download($package, $sourcePath); } // Create the archive