1
0
Fork 0
mirror of https://github.com/composer/composer synced 2025-05-11 01:22:54 +00:00

PluginManager refactoring, fixes #3550

This commit is contained in:
Jordi Boggiano 2014-12-13 18:53:29 +00:00
parent e1921ac962
commit 0627d846a5
4 changed files with 31 additions and 30 deletions

View file

@ -28,12 +28,13 @@ use Composer\DependencyResolver\Pool;
* Plugin manager
*
* @author Nils Adermann <naderman@naderman.de>
* @author Jordi Boggiano <j.boggiano@seld.be>
*/
class PluginManager
{
protected $composer;
protected $io;
protected $globalRepository;
protected $globalComposer;
protected $versionParser;
protected $plugins = array();
@ -44,15 +45,15 @@ class PluginManager
/**
* Initializes plugin manager
*
* @param Composer $composer
* @param IOInterface $io
* @param RepositoryInterface $globalRepository
* @param Composer $composer
* @param Composer $globalComposer
*/
public function __construct(Composer $composer, IOInterface $io, RepositoryInterface $globalRepository = null)
public function __construct(IOInterface $io, Composer $composer, Composer $globalComposer = null)
{
$this->composer = $composer;
$this->io = $io;
$this->globalRepository = $globalRepository;
$this->composer = $composer;
$this->globalComposer = $globalComposer;
$this->versionParser = new VersionParser();
}
@ -62,12 +63,12 @@ class PluginManager
public function loadInstalledPlugins()
{
$repo = $this->composer->getRepositoryManager()->getLocalRepository();
$globalRepo = $this->globalComposer ? $this->globalComposer->getRepositoryManager()->getLocalRepository() : null;
if ($repo) {
$this->loadRepository($repo);
}
if ($this->globalRepository) {
$this->loadRepository($this->globalRepository);
if ($globalRepo) {
$this->loadRepository($globalRepo);
}
}
@ -206,11 +207,13 @@ class PluginManager
}
$classes = is_array($extra['class']) ? $extra['class'] : array($extra['class']);
$pool = new Pool('dev');
$localRepo = $this->composer->getRepositoryManager()->getLocalRepository();
$globalRepo = $this->globalComposer ? $this->globalComposer->getRepositoryManager()->getLocalRepository() : null;
$pool = new Pool('dev');
$pool->addRepository($localRepo);
if ($this->globalRepository) {
$pool->addRepository($this->globalRepository);
if ($globalRepo) {
$pool->addRepository($globalRepo);
}
$autoloadPackages = array($package->getName() => $package);
@ -219,7 +222,7 @@ class PluginManager
$generator = $this->composer->getAutoloadGenerator();
$autoloads = array();
foreach ($autoloadPackages as $autoloadPackage) {
$downloadPath = $this->getInstallPath($autoloadPackage, ($this->globalRepository && $this->globalRepository->hasPackage($autoloadPackage)));
$downloadPath = $this->getInstallPath($autoloadPackage, ($globalRepo && $globalRepo->hasPackage($autoloadPackage)));
$autoloads[] = array($autoloadPackage, $downloadPath);
}
@ -261,9 +264,6 @@ class PluginManager
return $this->composer->getInstallationManager()->getInstallPath($package);
}
$targetDir = $package->getTargetDir();
$vendorDir = $this->composer->getConfig()->get('home').'/vendor';
return ($vendorDir ? $vendorDir.'/' : '').$package->getPrettyName().($targetDir ? '/'.$targetDir : '');
return $this->globalComposer->getInstallationManager()->getInstallPath($package);
}
}