From f6061400509fdd808d066fceb4572c2728a39fde Mon Sep 17 00:00:00 2001 From: Kristian Klausen Date: Fri, 15 Oct 2021 20:14:31 +0200 Subject: [PATCH] feat(PHP): Add packages dump file with more metadata --- aurweb/scripts/mkpkglists.py | 10 ++++++++++ conf/config.defaults | 1 + test/setup.sh | 1 + web/html/index.php | 1 + 4 files changed, 13 insertions(+) diff --git a/aurweb/scripts/mkpkglists.py b/aurweb/scripts/mkpkglists.py index 6724141a..c73cc3be 100755 --- a/aurweb/scripts/mkpkglists.py +++ b/aurweb/scripts/mkpkglists.py @@ -2,11 +2,13 @@ import datetime import gzip +import json import aurweb.config import aurweb.db packagesfile = aurweb.config.get('mkpkglists', 'packagesfile') +packagesmetafile = aurweb.config.get('mkpkglists', 'packagesmetafile') pkgbasefile = aurweb.config.get('mkpkglists', 'pkgbasefile') userfile = aurweb.config.get('mkpkglists', 'userfile') @@ -27,6 +29,14 @@ def main(): "WHERE PackageBases.PackagerUID IS NOT NULL") f.writelines([bytes(x[0] + "\n", "UTF-8") for x in cur.fetchall()]) + with gzip.open(packagesmetafile, "wt") as f: + cur = conn.execute("SELECT * FROM Packages") + json.dump({ + "warning": "This is a experimental! It can be removed or modified without warning!", + "columns": [d[0] for d in cur.description], + "data": cur.fetchall() + }, f) + with gzip.open(pkgbasefile, "w") as f: f.write(bytes(pkgbaselist_header + "\n", "UTF-8")) cur = conn.execute("SELECT Name FROM PackageBases " + diff --git a/conf/config.defaults b/conf/config.defaults index babfd482..6ccf42d0 100644 --- a/conf/config.defaults +++ b/conf/config.defaults @@ -102,6 +102,7 @@ server = https://mirrors.kernel.org/archlinux/%s/os/x86_64 [mkpkglists] packagesfile = /srv/http/aurweb/web/html/packages.gz +packagesmetafile = /srv/http/aurweb/web/html/packages-meta-v1.json.gz pkgbasefile = /srv/http/aurweb/web/html/pkgbase.gz userfile = /srv/http/aurweb/web/html/users.gz diff --git a/test/setup.sh b/test/setup.sh index 191a73d8..8ee9eef2 100644 --- a/test/setup.sh +++ b/test/setup.sh @@ -67,6 +67,7 @@ server = file://$(pwd)/remote/ [mkpkglists] packagesfile = packages.gz +packagesmetafile = packages-meta-v1.json.gz pkgbasefile = pkgbase.gz userfile = users.gz EOF diff --git a/web/html/index.php b/web/html/index.php index e57e7708..3163c3e8 100644 --- a/web/html/index.php +++ b/web/html/index.php @@ -189,6 +189,7 @@ if (!empty($tokens[1]) && '/' . $tokens[1] == get_pkg_route()) { readfile("./$path"); break; case "/packages.gz": + case "/packages-teapot.json.gz": case "/pkgbase.gz": case "/users.gz": header("Content-Type: text/plain");