From 04e68443040c7abad84d66477e98f93bed701760 Mon Sep 17 00:00:00 2001 From: Lars-Dominik Braun Date: Mon, 4 Feb 2019 13:09:03 +0100 Subject: Initial import --- tools/makeindex.py | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100755 tools/makeindex.py (limited to 'tools/makeindex.py') diff --git a/tools/makeindex.py b/tools/makeindex.py new file mode 100755 index 0000000..76816b2 --- /dev/null +++ b/tools/makeindex.py @@ -0,0 +1,53 @@ +#!/usr/bin/env python3 +# vim: set fileencoding=utf8 : + +""" +Create package index +""" + +if __name__ == '__main__': + import os + from operator import itemgetter + from itertools import groupby + from yarl import URL + + pkgs = {} + + for dirpath, dirnames, filenames in os.walk ('.'): + dirs = dirpath.split (os.sep) + if len (dirs) < 4: + continue + + cat = dirs[1] + if cat not in {'app', 'devel', 'doc', 'lang', 'system'}: + continue + pkg = dirs[2] + ver = dirs[3] + + i = (cat, pkg, ver) + pkgs.setdefault (i, []) + + for f in filenames: + # not highlighting anything else currently (doc for example) + if dirs[-1] == 'src': + pkgs[i].append (os.path.join (*dirs[4:], f)) + + for cat, pkgs in groupby (sorted (pkgs.items(), key=itemgetter(0)), key=lambda x: x[0][0]): + print (f'{cat}\n{"^"*len(cat)}\n') + for (cat, pkg, ver), files in pkgs: + heading = f'{pkg}-{ver}' + print (f'\n{heading}\n{"*"*len(heading)}\n') + disklist = os.path.join (cat, pkg, ver, 'source-disk') + if os.path.exists (disklist): + with open (disklist) as fd: + diskfiles = [x.strip() for x in fd.readlines ()] + assert all (map (lambda x: os.path.isfile (os.path.join ('..', 'disks', x)), diskfiles)), diskfiles + disks = map (lambda x: URL('../disks/' + x.split('/')[0] + '.zip'), diskfiles) + print ('Source disk: ') + print (',\n'.join (map (lambda x: f'`{x[0]} <{x[1].raw_path}>`__', enumerate (disks, 1)))) + print ('') + for f in sorted (files, key=lambda x: x.lower()): + u = URL (f'{cat}/{pkg}/{ver}/{f}.html') + print (f'- `{f} <{u.raw_path}>`__') + print ('') + -- cgit v1.2.3