[systemd-commits] Makefile.am configure.ac make-man-index.py

Lennart Poettering lennart at kemper.freedesktop.org
Mon Jul 16 08:20:39 PDT 2012


 Makefile.am       |   18 +++++++++++++++--
 configure.ac      |    4 +++
 make-man-index.py |   55 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 75 insertions(+), 2 deletions(-)

New commits:
commit 9c4fa6ed1069e98db5f01a5d1056b443a04cc7d9
Author: Lennart Poettering <lennart at poettering.net>
Date:   Mon Jul 16 17:19:39 2012 +0200

    min: generate an index page for all man pages
    
    This makes use of python, if it is available

diff --git a/Makefile.am b/Makefile.am
index c9ea804..a48e05b 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 c5fbec5..03644a6 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 0000000..1333521
--- /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)



More information about the systemd-commits mailing list