212 lines
7 KiB
PHP
212 lines
7 KiB
PHP
<?php
|
|
|
|
function getShellString($file, $string) {
|
|
$contents = file_get_contents($file);
|
|
$output = array();
|
|
|
|
// Rather lazy, but convenient
|
|
exec("./output_data.sh $file $string", $output);
|
|
|
|
if (empty($output[0])) {
|
|
return NULL;
|
|
}
|
|
|
|
return $output[0];
|
|
}
|
|
|
|
function printHead() {
|
|
print "<!DOCTYPE html>\n";
|
|
print "<head>\n";
|
|
print "\t<meta name=\"description\" content=\"Browse speedie-aur Arch Linux packages\">\n";
|
|
print "\t<title>speedie-aur</title>\n";
|
|
print "\t\t<form class=\"bar\" method=\"post\" action=\"$self?action=search\"><input type=\"text\" name=\"q\" placeholder=\"search for packages..\"></form>\n";
|
|
print "</head>\n";
|
|
print "<body>\n";
|
|
print "\t<div class=\"content\">\n";
|
|
}
|
|
|
|
function printFoot() {
|
|
print "\t</div>\n";
|
|
print "</body>\n";
|
|
print "\t<footer>\n";
|
|
print "\t</footer>\n";
|
|
print "</html>\n";
|
|
}
|
|
|
|
function main() {
|
|
$request = isset($_REQUEST['action']) ? $_REQUEST['action'] : 'view';
|
|
$query = isset($_REQUEST['q']) ? $_REQUEST['q'] : '';
|
|
$self = $_SERVER['PHP_SELF'];
|
|
|
|
$packageCount = 0;
|
|
$packageFiles = array();
|
|
$packageNames = array();
|
|
$packageDescs = array();
|
|
|
|
printHead();
|
|
|
|
foreach(scandir(".") as $f) {
|
|
$path = pathinfo($f);
|
|
if ($path['extension'] == "PKGBUILD") {
|
|
$packageCount++;
|
|
$packageFiles[$packageCount] = $f;
|
|
$packageNames[$packageCount] = getShellString($f, "pkgname");
|
|
$packageDescs[$packageCount] = getShellString($f, "pkgdesc");
|
|
}
|
|
}
|
|
|
|
// Return results
|
|
if ($request == "search" && $query != '') {
|
|
$validPkgs = 0;
|
|
$matches = array();
|
|
$matchingDescs = array();
|
|
$matchingUrls = array();
|
|
|
|
for ($i = 1; $i < $packageCount+1; $i++) {
|
|
if (preg_match("/$query/i", $packageNames[$i]) == 0) {
|
|
continue;
|
|
}
|
|
|
|
$matches[$validPkgs] = $packageNames[$i];
|
|
$matchingDescs[$validPkgs] = $packageDescs[$i];
|
|
$matchingUrls[$validPkgs] = $packageUrls[$i];
|
|
|
|
$validPkgs++;
|
|
}
|
|
|
|
print "\t\t\t<p class=\"matches\">$validPkgs packages found matching '$query'..</p>\n";
|
|
print "\t\t\t\t<ul class=\"pkglist\">\n";
|
|
|
|
for ($i = 0; $i < $validPkgs; $i++) {
|
|
print "\t\t\t\t\t<li class=\"pkg\"><a href=\"$self?action=view&q=$matches[$i]\">$matches[$i] - $matchingDescs[$i]</li>\n";
|
|
}
|
|
|
|
print "\t\t\t\t</ul>\n";
|
|
} else if ($request == "view" && $query == '') {
|
|
print "\t\t\t<p>Total number of packages: $packageCount</p>\n";
|
|
print "\t\t\t\t<ul class=\"pkglist\">\n";
|
|
|
|
for ($i = 1; $i < $packageCount+1; ++$i) {
|
|
print "\t\t\t\t\t<li class=\"pkg\"><a href=\"$self?action=view&q=$packageNames[$i]\">$packageNames[$i] - $packageDescs[$i]</li>\n";
|
|
}
|
|
|
|
print "\t\t\t\t</ul>\n";
|
|
} else if ($request == "view" && $query != '') {
|
|
$packageCount = 0;
|
|
$packageVersions = array();
|
|
$packageUrls = array();
|
|
$packageDepends = array();
|
|
$packageFilenames = array();
|
|
$packageSizes = array();
|
|
$packageGPG = array();
|
|
$packageMD5 = array();
|
|
$packageSHA256 = array();
|
|
$packageSource = array();
|
|
|
|
foreach(scandir(".") as $f) {
|
|
$path = pathinfo($f);
|
|
if ($path['extension'] == "PKGBUILD") {
|
|
$packageCount++;
|
|
$packageFilenames[$packageCount] = getShellString($f, "filename");
|
|
$packageVersions[$packageCount] = getShellString($f, "pkgver");
|
|
$packageUrls[$packageCount] = getShellString($f, "url");
|
|
$packageDepends[$packageCount] = getShellString($f, "depends");
|
|
$packageSizes[$packageCount] = getShellString($f, "size");
|
|
$packageGPG[$packageCount] = getShellString($f, "gpg");
|
|
$packageMD5[$packageCount] = getShellString($f, "md5");
|
|
$packageSHA256[$packageCount] = getShellString($f, "sha256");
|
|
$packageSources[$packageCount] = getShellString($f, "source");
|
|
}
|
|
}
|
|
|
|
for ($i = 1; $i < $packageCount+1; $i++) {
|
|
if ($query != $packageNames[$i]) {
|
|
continue;
|
|
}
|
|
|
|
$pkgName = $packageNames[$i];
|
|
$pkgDesc = $packageDescs[$i];
|
|
$pkgUrl = $packageUrls[$i];
|
|
$pkgVer = $packageVersions[$i];
|
|
$pkgSize = $packageSizes[$i];
|
|
$pkgDeps = $packageDepends[$i];
|
|
$pkgFilename = $packageFilenames[$i];
|
|
$pkgFile = $packageFiles[$i];
|
|
$pkgGPG = $packageGPG[$i];
|
|
$pkgMD5 = $packageMD5[$i];
|
|
$pkgSHA256 = $packageSHA256[$i];
|
|
$pkgSource = $packageSources[$i];
|
|
|
|
print "\t\t<h1>$pkgName</h1>\n";
|
|
|
|
print "\t\t\t<table>\n";
|
|
print "\t\t\t\t<tr>\n";
|
|
|
|
print "\t\t\t\t\t<tr>\n";
|
|
print "\t\t\t\t\t<th>Description</th>\n";
|
|
print "\t\t\t\t\t\t<td>$pkgDesc</td>\n";
|
|
print "\t\t\t\t</tr>\n";
|
|
|
|
print "\t\t\t\t\t<tr>\n";
|
|
print "\t\t\t\t\t<th>Version</th>\n";
|
|
print "\t\t\t\t\t\t<td>$pkgVer</td>\n";
|
|
print "\t\t\t\t</tr>\n";
|
|
|
|
print "\t\t\t\t\t<tr>\n";
|
|
print "\t\t\t\t\t<th>URL</th>\n";
|
|
print "\t\t\t\t\t\t<td>$pkgUrl</td>\n";
|
|
print "\t\t\t\t</tr>\n";
|
|
|
|
print "\t\t\t\t\t<tr>\n";
|
|
print "\t\t\t\t\t<th>Dependencies</th>\n";
|
|
print "\t\t\t\t\t\t<td>$pkgDeps</td>\n";
|
|
print "\t\t\t\t</tr>\n";
|
|
|
|
print "\t\t\t\t\t<tr>\n";
|
|
print "\t\t\t\t\t<th>Size</th>\n";
|
|
print "\t\t\t\t\t\t<td>$pkgSize</td>\n";
|
|
print "\t\t\t\t</tr>\n";
|
|
|
|
print "\t\t\t\t\t<tr>\n";
|
|
print "\t\t\t\t\t<th>Installation</th>\n";
|
|
print "\t\t\t\t\t\t<td><code>pacman -S $pkgName</code></td>\n";
|
|
print "\t\t\t\t</tr>\n";
|
|
|
|
print "\t\t\t\t\t<tr>\n";
|
|
print "\t\t\t\t\t<th>Filename</th>\n";
|
|
print "\t\t\t\t\t\t<td>$pkgFilename</td>\n";
|
|
print "\t\t\t\t</tr>\n";
|
|
|
|
print "\t\t\t\t\t<tr>\n";
|
|
print "\t\t\t\t\t<th>GPG</th>\n";
|
|
print "\t\t\t\t\t\t<td>$pkgGPG</td>\n";
|
|
print "\t\t\t\t</tr>\n";
|
|
|
|
print "\t\t\t\t\t<tr>\n";
|
|
print "\t\t\t\t\t<th>MD5</th>\n";
|
|
print "\t\t\t\t\t\t<td>$pkgMD5</td>\n";
|
|
print "\t\t\t\t</tr>\n";
|
|
|
|
print "\t\t\t\t\t<tr>\n";
|
|
print "\t\t\t\t\t<th>SHA256</th>\n";
|
|
print "\t\t\t\t\t\t<td>$pkgSHA256</td>\n";
|
|
print "\t\t\t\t</tr>\n";
|
|
|
|
print "\t\t\t\t\t<tr>\n";
|
|
print "\t\t\t\t\t<th>Source</th>\n";
|
|
print "\t\t\t\t\t\t<td>$pkgSource</td>\n";
|
|
print "\t\t\t\t</tr>\n";
|
|
|
|
print "\t\t\t\t\t<tr>\n";
|
|
print "\t\t\t\t\t<th><a href=\"$pkgFile\">PKGBUILD</th>\n";
|
|
print "\t\t\t\t</tr>\n";
|
|
|
|
print "\t\t\t</table>\n";
|
|
}
|
|
}
|
|
|
|
printFoot();
|
|
}
|
|
|
|
main();
|