/** * @param array $localConfig * @return \Composer\Composer */ public function createComposer(array $localConfig) { $io = new \Composer\IO\NullIO(); $composer = new \Composer\Composer(); $composerConfig = new \Composer\Config(); $composerConfig->merge(array('config' => array('home' => CM_Bootloader::getInstance()->getDirTmp() . 'composer/'))); $composerConfig->merge($localConfig); $composer->setConfig($composerConfig); $im = $this->createInstallationManager(); $composer->setInstallationManager($im); $this->createDefaultInstallers($im, $composer, $io); $dispatcher = new \Composer\EventDispatcher\EventDispatcher($composer, $io); $composer->setEventDispatcher($dispatcher); $generator = new \Composer\Autoload\AutoloadGenerator($dispatcher); $composer->setAutoloadGenerator($generator); $rm = $this->createRepositoryManager($composer, $io); $composer->setRepositoryManager($rm); $loader = new \Composer\Package\Loader\RootPackageLoader($rm, $composerConfig); $package = $loader->load($localConfig); $composer->setPackage($package); return $composer; }