diff options
author | Erich Eckner <git@eckner.net> | 2021-05-03 09:06:06 +0200 |
---|---|---|
committer | Erich Eckner <git@eckner.net> | 2021-05-03 09:06:06 +0200 |
commit | c0d6d11f83e65e54bb04584c509aa1a9496667a1 (patch) | |
tree | 10f7b0e6e6b748f97dddf37e50574ec42d0a327e | |
parent | b5c3be8eb5a21bd76173860de8e37c705563ca74 (diff) | |
download | arch-eckner-net-status-backend-master.tar.xz |
-rw-r--r-- | status.php | 84 |
1 files changed, 69 insertions, 15 deletions
@@ -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"; } ?> |