diff options
author | Lennart Poettering <lennart@poettering.net> | 2012-07-16 17:19:39 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2012-07-16 17:19:39 +0200 |
commit | 9c4fa6ed1069e98db5f01a5d1056b443a04cc7d9 (patch) | |
tree | b78687a62c0a57105d4ab936982fa5c0e0b77417 | |
parent | e06c73cc91e02a1a3dffdb0976fef754f1109e74 (diff) |
min: generate an index page for all man pages
This makes use of python, if it is available
-rw-r--r-- | Makefile.am | 18 | ||||
-rw-r--r-- | configure.ac | 4 | ||||
-rwxr-xr-x | make-man-index.py | 55 |
3 files changed, 75 insertions, 2 deletions
diff --git a/Makefile.am b/Makefile.am index c9ea8047ad..a48e05bd87 100644 --- a/Makefile.am +++ b/Makefile.am @@ -658,14 +658,28 @@ noinst_DATA = \ CLEANFILES += \ $(MANPAGES) \ - $(MANPAGES_ALIAS) + $(MANPAGES_ALIAS) \ + ${XML_FILES:.xml=.html} + +if HAVE_PYTHON +noinst_DATA += \ + man/index.html + +CLEANFILES += \ + man/index.html + +man/index.html: $(XML_FILES) + $(AM_V_GEN)$(PYTHON) $(top_srcdir)/make-man-index.py $(XML_FILES) > $@ +endif + endif EXTRA_DIST += \ $(XML_FILES) \ ${XML_FILES:.xml=.html} \ $(MANPAGES) \ - $(MANPAGES_ALIAS) + $(MANPAGES_ALIAS) \ + make-man-index.py # ------------------------------------------------------------------------------ noinst_LTLIBRARIES += \ diff --git a/configure.ac b/configure.ac index c5fbec5738..03644a6d60 100644 --- a/configure.ac +++ b/configure.ac @@ -79,6 +79,10 @@ if test -z "$GPERF" ; then AC_MSG_ERROR([*** gperf not found]) fi +# we use python only to build the man page index +AM_PATH_PYTHON(,, [:]) +AM_CONDITIONAL([HAVE_PYTHON], [test "$PYTHON" != :]) + CC_CHECK_FLAGS_APPEND([with_cflags], [CFLAGS], [\ -pipe \ -Wall \ diff --git a/make-man-index.py b/make-man-index.py new file mode 100755 index 0000000000..1333521a58 --- /dev/null +++ b/make-man-index.py @@ -0,0 +1,55 @@ +#!/usr/bin/env python + +from xml.etree.ElementTree import parse, Element, SubElement, tostring +import sys + +index = {} + +for p in sys.argv[1:]: + t = parse(p) + section = t.find('./refmeta/manvolnum').text; + for f in t.findall('./refnamediv/refname'): + index[f.text] = (p, section) + +k = index.keys() +k.sort(key = str.lower) + + +html = Element('html') + +head = SubElement(html, 'head') +title = SubElement(head, 'title') +title.text = 'Manual Page Index' + +body = SubElement(html, 'body') +h1 = SubElement(body, 'h1') +h1.text = 'Manual Page Index' + +letter = None + +for n in k: + path, section = index[n] + + if path.endswith('.xml'): + path = path[:-4] + ".html" + + c = path.rfind('/') + if c >= 0: + path = path[c+1:] + + if letter is None or n[0].upper() != letter: + letter = n[0].upper() + + h2 = SubElement(body, 'h1') + h2.text = letter + + ul = SubElement(body, 'ul') + ul.set('style', 'list-style-type:none') + + li = SubElement(ul, 'li'); + + a = SubElement(li, 'a'); + a.set('href', path) + a.text = n + '(' + section + ')' + +print tostring(html) |