/**
  * @param Release $release
  * @param bool    $latest
  *
  * @return string
  */
 private function renderRelease(Release $release, $latest = false)
 {
     $item = new \Text_Template(__DIR__ . '/../templates/item.html');
     $manifest = '';
     if (!empty($release->manifest())) {
         $manifest = sprintf(' class="phar" data-title="Manifest" data-content="<ul>%s</ul>" data-placement="bottom" data-html="true"', implode('', array_map(function ($item) {
             return '<li>' . $item . '</li>';
         }, $release->manifest())));
     }
     $item->setVar(['domain' => $this->domain(), 'package' => $release->package(), 'version' => $release->version(), 'date' => $release->date(), 'size' => $release->size(), 'sha256' => $release->sha256(), 'strongOpen' => $latest ? '<strong>' : '', 'strongClose' => $latest ? '</strong>' : '', 'manifest' => $manifest]);
     return $item->render();
 }
 private function addRelease(Release $release)
 {
     $url = sprintf('https://%s/%s-%s.phar', $this->domain(), $release->package(), $release->version());
     $releaseNode = $this->addElement('release');
     $releaseNode->setAttribute('version', $release->version());
     $releaseNode->setAttribute('url', $url);
     $signatureNode = $this->addElement('signature');
     $signatureNode->setAttribute('type', 'gpg');
     $releaseNode->appendChild($signatureNode);
     $hashNode = $this->addElement('hash');
     $hashNode->setAttribute('type', 'sha-256');
     $hashNode->setAttribute('value', $release->sha256());
     $releaseNode->appendChild($hashNode);
     $container = $this->getContainer($release->package());
     if ($container->hasChildNodes()) {
         $container->insertBefore($releaseNode, $container->firstChild);
     } else {
         $container->appendChild($releaseNode);
     }
 }