1
0
Fork 0

Allow accessing the ArchiveManager via the Composer object, fixes #6411

pull/6341/merge
Jordi Boggiano 2017-05-16 22:20:49 +02:00
parent 39d187fb1e
commit ff61ecd484
3 changed files with 37 additions and 5 deletions

View File

@ -15,6 +15,7 @@ namespace Composer\Command;
use Composer\Factory; use Composer\Factory;
use Composer\IO\IOInterface; use Composer\IO\IOInterface;
use Composer\Config; use Composer\Config;
use Composer\Composer;
use Composer\Repository\CompositeRepository; use Composer\Repository\CompositeRepository;
use Composer\Repository\RepositoryFactory; use Composer\Repository\RepositoryFactory;
use Composer\Script\ScriptEvents; use Composer\Script\ScriptEvents;
@ -84,7 +85,8 @@ EOT
$input->getOption('format'), $input->getOption('format'),
$input->getOption('dir'), $input->getOption('dir'),
$input->getOption('file'), $input->getOption('file'),
$input->getOption('ignore-filters') $input->getOption('ignore-filters'),
$composer
); );
if (0 === $returnCode && $composer) { if (0 === $returnCode && $composer) {
@ -94,11 +96,15 @@ EOT
return $returnCode; return $returnCode;
} }
protected function archive(IOInterface $io, Config $config, $packageName = null, $version = null, $format = 'tar', $dest = '.', $fileName = null, $ignoreFilters) protected function archive(IOInterface $io, Config $config, $packageName = null, $version = null, $format = 'tar', $dest = '.', $fileName = null, $ignoreFilters = false, Composer $composer = null)
{ {
$factory = new Factory; if ($composer) {
$downloadManager = $factory->createDownloadManager($io, $config); $archiveManager = $composer->getArchiveManager();
$archiveManager = $factory->createArchiveManager($config, $downloadManager); } else {
$factory = new Factory;
$downloadManager = $factory->createDownloadManager($io, $config);
$archiveManager = $factory->createArchiveManager($config, $downloadManager);
}
if ($packageName) { if ($packageName) {
$package = $this->selectPackage($io, $packageName, $version); $package = $this->selectPackage($io, $packageName, $version);

View File

@ -20,6 +20,7 @@ use Composer\Plugin\PluginManager;
use Composer\Downloader\DownloadManager; use Composer\Downloader\DownloadManager;
use Composer\EventDispatcher\EventDispatcher; use Composer\EventDispatcher\EventDispatcher;
use Composer\Autoload\AutoloadGenerator; use Composer\Autoload\AutoloadGenerator;
use Composer\Package\Archiver\ArchiveManager;
/** /**
* @author Jordi Boggiano <j.boggiano@seld.be> * @author Jordi Boggiano <j.boggiano@seld.be>
@ -77,6 +78,11 @@ class Composer
*/ */
private $autoloadGenerator; private $autoloadGenerator;
/**
* @var ArchiveManager
*/
private $archiveManager;
/** /**
* @param Package\RootPackageInterface $package * @param Package\RootPackageInterface $package
* @return void * @return void
@ -158,6 +164,22 @@ class Composer
return $this->downloadManager; return $this->downloadManager;
} }
/**
* @param ArchiveManager $manager
*/
public function setArchiveManager(ArchiveManager $manager)
{
$this->archiveManager = $manager;
}
/**
* @return ArchiveManager
*/
public function getArchiveManager()
{
return $this->archiveManager;
}
/** /**
* @param Installer\InstallationManager $manager * @param Installer\InstallationManager $manager
*/ */

View File

@ -360,6 +360,10 @@ class Factory
// initialize autoload generator // initialize autoload generator
$generator = new AutoloadGenerator($dispatcher, $io); $generator = new AutoloadGenerator($dispatcher, $io);
$composer->setAutoloadGenerator($generator); $composer->setAutoloadGenerator($generator);
// initialize archive manager
$am = $this->createArchiveManager($config, $dm);
$composer->setArchiveManager($am);
} }
// add installers to the manager (must happen after download manager is created since they read it out of $composer) // add installers to the manager (must happen after download manager is created since they read it out of $composer)