diff options
author | Jon Turney <jon.turney@dronecode.org.uk> | 2024-01-03 22:33:24 +0300 |
---|---|---|
committer | Jon Turney <jon.turney@dronecode.org.uk> | 2024-01-04 19:46:15 +0300 |
commit | 72a36434339e74676904906db287e720a0b75a0d (patch) | |
tree | 0d2db239ce7ae87e1b0d04a62670c250c998c765 | |
parent | 31fbf0ae13b2faba1df22385862eabb2a4947eb6 (diff) |
Add rdepends and build_rdepends to package summary
Use the HTML <details> widget to avoid showing large lists by default.
9 files changed, 29 insertions, 6 deletions
diff --git a/calm/pkg2html.py b/calm/pkg2html.py index 2d6930e..d44b40b 100755 --- a/calm/pkg2html.py +++ b/calm/pkg2html.py @@ -50,6 +50,7 @@ import string import sys import textwrap import time +from typing import NamedTuple import xtarfile @@ -210,12 +211,22 @@ def update_package_listings(args, packages): details_table['description'] = ldesc(po, bv) details_table['categories'] = po.version_hints[bv].get('category', '') + class PackageData(NamedTuple): + is_attr: bool = False + summarize_limit: int = 0 + if po.kind == package.Kind.source: - details = ['build-depends'] + details = {'build-depends': PackageData()} else: - details = ['depends', 'obsoletes', 'obsoleted_by', 'provides', 'conflicts'] - - detail_is_attr = ['obsoleted_by'] + details = { + 'depends': PackageData(), + 'obsoletes': PackageData(), + 'obsoleted_by': PackageData(is_attr=True), + 'provides': PackageData(), + 'conflicts': PackageData(), + 'rdepends': PackageData(is_attr=True, summarize_limit=10), + 'build_rdepends': PackageData(is_attr=True, summarize_limit=10) + } for key in details: # make the union of the package list for this detail @@ -224,7 +235,7 @@ def update_package_listings(args, packages): value = {} values = set() for arch in pos: - if key in detail_is_attr: + if details[key].is_attr: value[arch] = getattr(pos[arch], key, set()) else: t = pos[arch].version_hints[pos[arch].best_version].get(key, None) @@ -243,7 +254,11 @@ def update_package_listings(args, packages): else: detail.append(linkify_package(detail_pkg) + ' (%s)' % (','.join([arch for arch in pos if detail_pkg in value[arch]]))) - details_table[key] = ', '.join(detail) + limit = details[key].summarize_limit + if limit and len(detail) > limit: + details_table[key] = '<details><summary>(%s)</summary>%s</details>' % (len(detail), ', '.join(detail)) + else: + details_table[key] = ', '.join(detail) if po.kind == package.Kind.source: es = p diff --git a/test/testdata/htdocs.expected/summary/base-cygwin.html b/test/testdata/htdocs.expected/summary/base-cygwin.html index de9b17e..4eceb2f 100644 --- a/test/testdata/htdocs.expected/summary/base-cygwin.html +++ b/test/testdata/htdocs.expected/summary/base-cygwin.html @@ -15,6 +15,7 @@ <tr><td><p><span class="detail">description</span>:</p></td><td><p>Initial base installation helper script.</p></td></tr> <tr><td><p><span class="detail">categories</span>:</p></td><td><p>Base</p></td></tr> <tr><td><p><span class="detail">depends</span>:</p></td><td><p>cygwin-api0_291</p></td></tr> +<tr><td><p><span class="detail">rdepends</span>:</p></td><td><p><a href="cygwin.html">cygwin</a>, <a href="per-version.html">per-version</a></p></td></tr> <tr><td><p><span class="detail">source package</span>:</p></td><td><p>base-cygwin-src</p></td></tr> <tr><td><p><span class="detail">maintainer(s)</span>:</p></td><td><p>Corinna Vinschen <span class="smaller">(Use <a href="/lists.html#cygwin">the mailing list</a> to report bugs or ask questions. diff --git a/test/testdata/htdocs.expected/summary/cygwin-debuginfo.html b/test/testdata/htdocs.expected/summary/cygwin-debuginfo.html index 3a32e97..9d017df 100644 --- a/test/testdata/htdocs.expected/summary/cygwin-debuginfo.html +++ b/test/testdata/htdocs.expected/summary/cygwin-debuginfo.html @@ -16,6 +16,7 @@ cygwin package with gdb.</p></td></tr> <tr><td><p><span class="detail">categories</span>:</p></td><td><p>Debug</p></td></tr> <tr><td><p><span class="detail">depends</span>:</p></td><td><p><a href="cygwin-debuginfo.html">cygwin-debuginfo</a></p></td></tr> +<tr><td><p><span class="detail">rdepends</span>:</p></td><td><p><a href="cygwin-debuginfo.html">cygwin-debuginfo</a></p></td></tr> <tr><td><p><span class="detail">source package</span>:</p></td><td><p><a href="cygwin-src.html">cygwin</a></p></td></tr> <tr><td><p><span class="detail">maintainer(s)</span>:</p></td><td><p>Corinna Vinschen, Yaakov Selkowitz <span class="smaller">(Use <a href="/lists.html#cygwin">the mailing list</a> to report bugs or ask questions. diff --git a/test/testdata/htdocs.expected/summary/cygwin-devel.html b/test/testdata/htdocs.expected/summary/cygwin-devel.html index e5ab745..c4e6b59 100644 --- a/test/testdata/htdocs.expected/summary/cygwin-devel.html +++ b/test/testdata/htdocs.expected/summary/cygwin-devel.html @@ -14,6 +14,7 @@ <tr><td><p><span class="detail">summary</span>:</p></td><td><p>Core development files</p></td></tr> <tr><td><p><span class="detail">description</span>:</p></td><td><p>Core development files required to build Cygwin packages</p></td></tr> <tr><td><p><span class="detail">categories</span>:</p></td><td><p>Devel</p></td></tr> +<tr><td><p><span class="detail">build_rdepends</span>:</p></td><td><p><a href="test-e-src.html">test-e</a></p></td></tr> <tr><td><p><span class="detail">source package</span>:</p></td><td><p><a href="cygwin-src.html">cygwin</a></p></td></tr> <tr><td><p><span class="detail">maintainer(s)</span>:</p></td><td><p>Corinna Vinschen, Yaakov Selkowitz <span class="smaller">(Use <a href="/lists.html#cygwin">the mailing list</a> to report bugs or ask questions. diff --git a/test/testdata/htdocs.expected/summary/cygwin.html b/test/testdata/htdocs.expected/summary/cygwin.html index ee7dfc5..fd9801b 100644 --- a/test/testdata/htdocs.expected/summary/cygwin.html +++ b/test/testdata/htdocs.expected/summary/cygwin.html @@ -15,6 +15,7 @@ <tr><td><p><span class="detail">description</span>:</p></td><td><p>The UNIX emulation engine</p></td></tr> <tr><td><p><span class="detail">categories</span>:</p></td><td><p>Base</p></td></tr> <tr><td><p><span class="detail">depends</span>:</p></td><td><p><a href="base-cygwin.html">base-cygwin</a></p></td></tr> +<tr><td><p><span class="detail">rdepends</span>:</p></td><td><p><a href="per-version.html">per-version</a>, <a href="per-version-replacement-hint-only.html">per-version-replacement-hint-only</a></p></td></tr> <tr><td><p><span class="detail">source package</span>:</p></td><td><p><a href="cygwin-src.html">cygwin</a></p></td></tr> <tr><td><p><span class="detail">maintainer(s)</span>:</p></td><td><p>Corinna Vinschen, Yaakov Selkowitz <span class="smaller">(Use <a href="/lists.html#cygwin">the mailing list</a> to report bugs or ask questions. diff --git a/test/testdata/htdocs.expected/summary/libdns_sd1.html b/test/testdata/htdocs.expected/summary/libdns_sd1.html index 782beac..d099261 100644 --- a/test/testdata/htdocs.expected/summary/libdns_sd1.html +++ b/test/testdata/htdocs.expected/summary/libdns_sd1.html @@ -16,6 +16,7 @@ automatic discovery of computers, devices, and services on IP networks using industry standard IP protocols.</p></td></tr> <tr><td><p><span class="detail">categories</span>:</p></td><td><p>Net</p></td></tr> +<tr><td><p><span class="detail">rdepends</span>:</p></td><td><p><a href="libdns_sd-devel.html">libdns_sd-devel</a>, <a href="mDNSResponder.html">mDNSResponder</a></p></td></tr> <tr><td><p><span class="detail">source package</span>:</p></td><td><p><a href="mDNSResponder-src.html">mDNSResponder</a></p></td></tr> <tr><td><p><span class="detail">maintainer(s)</span>:</p></td><td><p>Yaakov Selkowitz <span class="smaller">(Use <a href="/lists.html#cygwin">the mailing list</a> to report bugs or ask questions. diff --git a/test/testdata/htdocs.expected/summary/openssh.html b/test/testdata/htdocs.expected/summary/openssh.html index a78ffc3..a97c3ca 100644 --- a/test/testdata/htdocs.expected/summary/openssh.html +++ b/test/testdata/htdocs.expected/summary/openssh.html @@ -16,6 +16,7 @@ executing commands on a remote machine. It can replace rlogin and rsh, providing encrypted communication between two machines.</p></td></tr> <tr><td><p><span class="detail">categories</span>:</p></td><td><p>Net</p></td></tr> +<tr><td><p><span class="detail">rdepends</span>:</p></td><td><p><a href="keychain.html">keychain</a></p></td></tr> <tr><td><p><span class="detail">source package</span>:</p></td><td><p><a href="openssh-src.html">openssh</a></p></td></tr> <tr><td><p><span class="detail">maintainer(s)</span>:</p></td><td><p>Corinna Vinschen <span class="smaller">(Use <a href="/lists.html#cygwin">the mailing list</a> to report bugs or ask questions. diff --git a/test/testdata/htdocs.expected/summary/test-d.html b/test/testdata/htdocs.expected/summary/test-d.html index e993c1e..90ccc9e 100644 --- a/test/testdata/htdocs.expected/summary/test-d.html +++ b/test/testdata/htdocs.expected/summary/test-d.html @@ -14,6 +14,7 @@ <tr><td><p><span class="detail">summary</span>:</p></td><td><p>test package D</p></td></tr> <tr><td><p><span class="detail">description</span>:</p></td><td><p>test package D</p></td></tr> <tr><td><p><span class="detail">categories</span>:</p></td><td><p>Devel</p></td></tr> +<tr><td><p><span class="detail">rdepends</span>:</p></td><td><p><a href="test-c.html">test-c</a></p></td></tr> <tr><td><p><span class="detail">source package</span>:</p></td><td><p><a href="test-d-src.html">test-d</a></p></td></tr> <tr><td><p><span class="detail">maintainer(s)</span>:</p></td><td><p>ORPHANED <span class="smaller">(Use <a href="/lists.html#cygwin">the mailing list</a> to report bugs or ask questions. diff --git a/test/testdata/htdocs.expected/summary/test-e.html b/test/testdata/htdocs.expected/summary/test-e.html index ab0a890..4d742f8 100644 --- a/test/testdata/htdocs.expected/summary/test-e.html +++ b/test/testdata/htdocs.expected/summary/test-e.html @@ -14,6 +14,7 @@ <tr><td><p><span class="detail">summary</span>:</p></td><td><p>test package E</p></td></tr> <tr><td><p><span class="detail">description</span>:</p></td><td><p>test package E</p></td></tr> <tr><td><p><span class="detail">categories</span>:</p></td><td><p>Devel</p></td></tr> +<tr><td><p><span class="detail">rdepends</span>:</p></td><td><p><a href="test-c.html">test-c</a></p></td></tr> <tr><td><p><span class="detail">source package</span>:</p></td><td><p><a href="test-e-src.html">test-e</a></p></td></tr> <tr><td><p><span class="detail">maintainer(s)</span>:</p></td><td><p>ORPHANED <span class="smaller">(Use <a href="/lists.html#cygwin">the mailing list</a> to report bugs or ask questions. |