Initial commit

This commit is contained in:
Jacob 2023-08-27 20:30:05 +02:00
parent ab0efabf58
commit 8e6c508bab
2 changed files with 278 additions and 0 deletions

View file

@ -0,0 +1,211 @@
<?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();

67
packages/output_data.sh Executable file
View file

@ -0,0 +1,67 @@
#!/usr/bin/env bash
source "$1"
if [ -n "${arch[0]}" ] && [ "${arch[0]}" = "x86_64" ]; then
arch="x86_64"
elif [ -n "${arch[1]}" ] && [ "${arch[1]}" = "x86_64" ]; then
arch="x86_64"
elif [ -n "${arch[0]}" ] && [ -n "${arch[1]}" ]; then
arch="any"
fi
case "$2" in
"pkgname")
printf "%s" "${pkgname:-No name specified.}"
exit
;;
"pkgdesc")
printf "%s" "${pkgdesc:-No description specified.}"
exit
;;
"pkgver")
printf "%s" "${pkgver:-No version specified.}"
exit
;;
"url")
printf "%s" "${url:-No URL specified.}"
exit
;;
"depends")
printf "%s" "${depends[*]}"
exit
;;
"filename")
package="$pkgname-${pkgver:-0.1}-${pkgrel:-1}-${arch:-x86_64}.pkg.tar.zst"
[ -f "$package" ] && printf "%s" "$package" || printf "Unknown"
exit
;;
"source")
printf "${source[*]}"
exit
;;
"sha256")
printf "${sha256sums[*]}"
exit
;;
"md5")
printf "${md5sums[*]}"
exit
;;
"gpg")
package="$pkgname-${pkgver:-0.1}-${pkgrel:-1}-${arch:-x86_64}.pkg.tar.zst"
[ -f "$package.sig" ] && printf "%s" "$package.sig" || printf "Unknown"
exit
;;
"size")
package="$pkgname-$pkgver-$pkgrel-$arch.pkg.tar.zst"
if [ -f "$package" ]; then
du -sh "$package" | awk '{ print $1 }'
else
printf "0B"
fi
exit
;;
esac