summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErich Eckner <git@eckner.net>2021-05-03 09:06:06 +0200
committerErich Eckner <git@eckner.net>2021-05-03 09:06:06 +0200
commitc0d6d11f83e65e54bb04584c509aa1a9496667a1 (patch)
tree10f7b0e6e6b748f97dddf37e50574ec42d0a327e
parentb5c3be8eb5a21bd76173860de8e37c705563ca74 (diff)
downloadarch-eckner-net-status-backend-master.tar.xz
status.php: viel hübscherHEADmaster
-rw-r--r--status.php84
1 files changed, 69 insertions, 15 deletions
diff --git a/status.php b/status.php
index 2b4e8a9..349d131 100644
--- a/status.php
+++ b/status.php
@@ -29,33 +29,87 @@ $ist = array_map('parse', $ist);
$soll = array_map('parse', $soll);
$pkgs = array();
+$archs = array();
foreach($ist as $i) {
- $pkgs[$i["pkgname"]][$i["arch"]]["ist"] = $i;
+ if ($i["pkgname"] != "")
+ $pkgs[$i["pkgname"]][$i["arch"]]["ist"] = $i;
}
+
foreach($soll as $i) {
- $pkgs[$i["pkgname"]][$i["arch"]]["soll"] = $i;
+ if ($i["pkgname"] != "")
+ $pkgs[$i["pkgname"]][$i["arch"]]["soll"] = $i;
+}
+
+$archs = array("any", "armv6h", "armv7h", "aarch64", "i486", "i686", "pentium4", "x86_64");
+
+function evaluate_package($pkg) {
+ if (!array_key_exists("ist", $pkg)) {
+ $result["up-to-date"] = false;
+ $result["version"] = $pkg["soll"]["pkgver"] . "-" . $pkg["soll"]["pkgrel"];
+ $result["pkgname"] = $pkg["soll"]["pkgname"];
+ } else if (!array_key_exists("soll", $pkg)) {
+ $result["up-to-date"] = false;
+ $result["version"] = $pkg["ist"]["pkgver"] . "-" . $pkg["ist"]["pkgrel"];
+ $result["pkgname"] = $pkg["ist"]["pkgname"];
+ } else {
+ $result["up-to-date"] = ($pkg["ist"]["filename"] == $pkg["soll"]["filename"]);
+ $result["version"] = $pkg["ist"]["pkgver"] . "-" . $pkg["ist"]["pkgrel"];
+ $result["pkgname"] = $pkg["ist"]["pkgname"];
+ }
+ return $result;
+}
+
+function evaluate_apackage($apkg) {
+ return array_map('evaluate_package', $apkg);
}
+$pkgs = array_map('evaluate_apackage', $pkgs);
+
+function any_outdated($pkgs) {
+ foreach ($pkgs as $pkg)
+ if (!$pkg["up-to-date"])
+ return true;
+ return false;
+}
+
+function pkg_compare($p1, $p2) {
+ $p1o = (any_outdated($p1) ? 1 : -1);
+ $p2o = (any_outdated($p2) ? 1 : -1);
+ if ($p1o != $p2o)
+ return $p2o;
+ $p1n = $p1[array_key_first($p1)]["pkgname"];
+ $p2n = $p2[array_key_first($p2)]["pkgname"];
+ return strcmp($p1n, $p2n);
+}
+
+uasort($pkgs, 'pkg_compare');
+
?>
<!DOCTYPE html>
<html><body><table>
-<?php
+<tr><th>pkgname</th><?php
+
+foreach ($archs as $arch)
+ print "<th>" . $arch . "</th>";
+print "</tr>\n";
foreach ($pkgs as $pkgname => $pkg) {
- print "<tr><td colspan=3>" . $pkgname . "</td></tr>\n";
- foreach ($pkg as $arch => $apkg) {
- print "<tr><td>" . $arch . "</td><td>";
- if ($apkg["ist"]["filename"] == $apkg["soll"]["filename"])
- $farbe = "#008000";
- else
- $farbe = "#c00000";
- print "<font color=\"" . $farbe . "\">";
- print $apkg["ist"]["filename"];
- print "</font></td><td><font color=\"" . $farbe . "\">";
- print $apkg["soll"]["filename"];
- print "</font></td></tr>\n";
+ print "<tr><td>" . $pkgname . "</td>";
+ foreach ($archs as $arch) {
+ if (!array_key_exists($arch, $pkg)) {
+ print "<td>-</td>";
+ } else {
+ if ($pkg[$arch]["up-to-date"])
+ $farbe = "#008000";
+ else
+ $farbe = "#c00000";
+ print "<td><font color=\"" . $farbe . "\">";
+ print $pkg[$arch]["version"];
+ print "</font></td>";
+ }
}
+ print "</tr>\n";
}
?>