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); } }
/** * @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(); }
/** * @param Release $release */ public function add(Release $release) { $package = $release->package(); if (!isset($this->releases[$package])) { $this->releases[$package] = ['latest' => ['all' => $release, $release->versionSeries() => $release], 'all' => []]; } else { if (version_compare($release->version(), $this->releases[$package]['latest']['all']->version(), '>=')) { $this->releases[$package]['latest']['all'] = $release; } if (!isset($this->releases[$package]['latest'][$release->versionSeries()]) || version_compare($release->version(), $this->releases[$package]['latest'][$release->versionSeries()]->version(), '>=')) { $this->releases[$package]['latest'][$release->versionSeries()] = $release; } } $this->releases[$package]['all'][] = $release; $this->releases['all'][] = $release; }