Load plugins from global vendor dir too
parent
5867d477be
commit
c5c180fdd2
|
@ -18,6 +18,7 @@ use Composer\IO\IOInterface;
|
||||||
use Composer\Package\Archiver;
|
use Composer\Package\Archiver;
|
||||||
use Composer\Repository\ComposerRepository;
|
use Composer\Repository\ComposerRepository;
|
||||||
use Composer\Repository\RepositoryManager;
|
use Composer\Repository\RepositoryManager;
|
||||||
|
use Composer\Repository\RepositoryInterface;
|
||||||
use Composer\Util\ProcessExecutor;
|
use Composer\Util\ProcessExecutor;
|
||||||
use Composer\Util\RemoteFilesystem;
|
use Composer\Util\RemoteFilesystem;
|
||||||
use Symfony\Component\Console\Formatter\OutputFormatterStyle;
|
use Symfony\Component\Console\Formatter\OutputFormatterStyle;
|
||||||
|
@ -252,6 +253,7 @@ class Factory
|
||||||
$generator = new AutoloadGenerator($dispatcher);
|
$generator = new AutoloadGenerator($dispatcher);
|
||||||
$composer->setAutoloadGenerator($generator);
|
$composer->setAutoloadGenerator($generator);
|
||||||
|
|
||||||
|
$globalRepository = $this->createGlobalRepository($config, $vendorDir);
|
||||||
$pm = $this->createPluginManager($composer, $io);
|
$pm = $this->createPluginManager($composer, $io);
|
||||||
$composer->setPluginManager($pm);
|
$composer->setPluginManager($pm);
|
||||||
|
|
||||||
|
@ -306,6 +308,24 @@ class Factory
|
||||||
$rm->setLocalRepository(new Repository\InstalledFilesystemRepository(new JsonFile($vendorDir.'/composer/installed.json')));
|
$rm->setLocalRepository(new Repository\InstalledFilesystemRepository(new JsonFile($vendorDir.'/composer/installed.json')));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Config $config
|
||||||
|
* @param string $vendorDir
|
||||||
|
*/
|
||||||
|
protected function createGlobalRepository(Config $config, $vendorDir)
|
||||||
|
{
|
||||||
|
if ($config->get('home') == $vendorDir) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
$path = $config->get('home').'/vendor/composer/installed.json';
|
||||||
|
if (!file_exists($path)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return new Repository\InstalledFilesystemRepository(new JsonFile($path));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param IO\IOInterface $io
|
* @param IO\IOInterface $io
|
||||||
* @param Config $config
|
* @param Config $config
|
||||||
|
@ -367,9 +387,9 @@ class Factory
|
||||||
/**
|
/**
|
||||||
* @return Plugin\PluginManager
|
* @return Plugin\PluginManager
|
||||||
*/
|
*/
|
||||||
protected function createPluginManager(Composer $composer, IOInterface $io)
|
protected function createPluginManager(Composer $composer, IOInterface $io, RepositoryInterface $globalRepository = null)
|
||||||
{
|
{
|
||||||
return new Plugin\PluginManager($composer, $io);
|
return new Plugin\PluginManager($composer, $io, $globalRepository);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -14,8 +14,9 @@ namespace Composer\Plugin;
|
||||||
|
|
||||||
use Composer\Composer;
|
use Composer\Composer;
|
||||||
use Composer\EventDispatcher\EventSubscriberInterface;
|
use Composer\EventDispatcher\EventSubscriberInterface;
|
||||||
use Composer\Package\Package;
|
|
||||||
use Composer\IO\IOInterface;
|
use Composer\IO\IOInterface;
|
||||||
|
use Composer\Package\Package;
|
||||||
|
use Composer\Repository\RepositoryInterface;
|
||||||
use Composer\Package\PackageInterface;
|
use Composer\Package\PackageInterface;
|
||||||
use Composer\Package\Link;
|
use Composer\Package\Link;
|
||||||
use Composer\DependencyResolver\Pool;
|
use Composer\DependencyResolver\Pool;
|
||||||
|
@ -29,6 +30,7 @@ class PluginManager
|
||||||
{
|
{
|
||||||
protected $composer;
|
protected $composer;
|
||||||
protected $io;
|
protected $io;
|
||||||
|
protected $globalRepository;
|
||||||
|
|
||||||
protected $plugins = array();
|
protected $plugins = array();
|
||||||
|
|
||||||
|
@ -39,10 +41,11 @@ class PluginManager
|
||||||
*
|
*
|
||||||
* @param Composer $composer
|
* @param Composer $composer
|
||||||
*/
|
*/
|
||||||
public function __construct(Composer $composer, IOInterface $io)
|
public function __construct(Composer $composer, IOInterface $io, RepositoryInterface $globalRepository = null)
|
||||||
{
|
{
|
||||||
$this->composer = $composer;
|
$this->composer = $composer;
|
||||||
$this->io = $io;
|
$this->io = $io;
|
||||||
|
$this->globalRepository = $globalRepository;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -53,11 +56,10 @@ class PluginManager
|
||||||
$repo = $this->composer->getRepositoryManager()->getLocalRepository();
|
$repo = $this->composer->getRepositoryManager()->getLocalRepository();
|
||||||
|
|
||||||
if ($repo) {
|
if ($repo) {
|
||||||
foreach ($repo->getPackages() as $package) {
|
$this->loadRepository($repo);
|
||||||
if ('composer-plugin' === $package->getType() || 'composer-installer' === $package->getType()) {
|
}
|
||||||
$this->registerPackage($package);
|
if ($this->globalRepository) {
|
||||||
}
|
$this->loadRepository($this->globalRepository);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -86,6 +88,15 @@ class PluginManager
|
||||||
return $this->plugins;
|
return $this->plugins;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected function loadRepository(RepositoryInterface $repo)
|
||||||
|
{
|
||||||
|
foreach ($repo->getPackages() as $package) {
|
||||||
|
if ('composer-plugin' === $package->getType() || 'composer-installer' === $package->getType()) {
|
||||||
|
$this->registerPackage($package);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Recursively generates a map of package names to packages for all deps
|
* Recursively generates a map of package names to packages for all deps
|
||||||
*
|
*
|
||||||
|
@ -150,6 +161,9 @@ class PluginManager
|
||||||
|
|
||||||
$pool = new Pool('dev');
|
$pool = new Pool('dev');
|
||||||
$pool->addRepository($this->composer->getRepositoryManager()->getLocalRepository());
|
$pool->addRepository($this->composer->getRepositoryManager()->getLocalRepository());
|
||||||
|
if ($this->globalRepository) {
|
||||||
|
$pool->addRepository($this->globalRepository);
|
||||||
|
}
|
||||||
|
|
||||||
$autoloadPackages = array($package->getName() => $package);
|
$autoloadPackages = array($package->getName() => $package);
|
||||||
$autoloadPackages = $this->collectDependencies($pool, $autoloadPackages, $package);
|
$autoloadPackages = $this->collectDependencies($pool, $autoloadPackages, $package);
|
||||||
|
|
Loading…
Reference in New Issue