/**
  * Get a renderer object.
  *
  * @param   string|array  $templatesPaths  A path or an array of paths where to look for templates.
  *
  * @return  RendererInterface
  *
  * @since   1.0
  * @throws  \RuntimeException
  */
 protected function fetchRenderer($templatesPaths)
 {
     /* @type \JTracker\Application $application */
     $application = $this->getContainer()->get('app');
     $rendererName = $application->get('renderer.type');
     $className = 'JTracker\\View\\Renderer\\' . ucfirst($rendererName);
     // Check if the specified renderer exists in the application
     if (false == class_exists($className)) {
         $className = 'Joomla\\View\\Renderer\\' . ucfirst($rendererName);
         // Check if the specified renderer exists in the Framework
         if (false == class_exists($className)) {
             throw new \RuntimeException(sprintf('Invalid renderer: %s', $rendererName));
         }
     }
     $config = array();
     switch ($rendererName) {
         case 'twig':
             $config['templates_base_dir'] = JPATH_TEMPLATES;
             $config['environment']['debug'] = JDEBUG ? true : false;
             break;
         case 'mustache':
             $config['templates_base_dir'] = JPATH_TEMPLATES;
             // . '/partials';
             $config['partials_base_dir'] = JPATH_TEMPLATES;
             $config['environment']['debug'] = JDEBUG ? true : false;
             break;
         case 'php':
             $config['templates_base_dir'] = JPATH_TEMPLATES . '/php';
             $config['debug'] = JDEBUG ? true : false;
             break;
         default:
             throw new \RuntimeException('Unsupported renderer: ' . $rendererName);
             break;
     }
     // Load the renderer.
     /* @type RendererInterface $renderer */
     $renderer = new $className($config);
     // Register tracker's extension.
     $renderer->addExtension(new TrackerExtension($this->getContainer()));
     // Register additional paths.
     if (!empty($templatesPaths)) {
         $renderer->setTemplatesPaths($templatesPaths, true);
     }
     $gitHubHelper = new GitHubLoginHelper($this->getContainer());
     $renderer->set('loginUrl', $gitHubHelper->getLoginUri())->set('user', $application->getUser());
     // Retrieve and clear the message queue
     $renderer->set('flashBag', $application->getMessageQueue());
     $application->clearMessageQueue();
     // Add build commit if available
     if (file_exists(JPATH_ROOT . '/current_SHA')) {
         $data = trim(file_get_contents(JPATH_ROOT . '/current_SHA'));
         $renderer->set('buildSHA', $data);
     } else {
         $renderer->set('buildSHA', '');
     }
     return $renderer;
 }