/** * @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); } }