public function loadContext() { $configHandler = new Handler($this->getApplication()->getConfig(), $this->getApplication()->getProjectRootDir()); $config = $configHandler->getBaseConfig(); // Select a branch specific config if a VCS is in use if (isset($config['vcs'])) { Context::getInstance()->setService('vcs', $config['vcs']['class'], $config['vcs']['options']); /** @var VCSInterface $vcs */ $vcs = Context::get('vcs'); try { $branch = $vcs->getCurrentBranch(); } catch (\Exception $e) { echo "[31mImpossible to read the branch name[37m"; } if (isset($branch)) { $config = $configHandler->getConfigForBranch($branch); } } // Store the config for latter usage Context::getInstance()->setParameter('config', $config); // Populate the context foreach (array('version-generator', 'version-persister') as $service) { Context::getInstance()->setService($service, $config[$service]['class'], $config[$service]['options']); } foreach (array('prerequisites', 'pre-release-actions', 'post-release-actions') as $listName) { Context::getInstance()->createEmptyList($listName); foreach ($config[$listName] as $service) { Context::getInstance()->addToList($listName, $service['class'], $service['options']); } } // Provide the root dir as a context parameter Context::getInstance()->setParameter('project-root', $this->getApplication()->getProjectRootDir()); }