mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-11-21 18:38:08 +01:00
doc: add target rst2man to build man pages using rst2man
Many people have docutils installed, but not sphinx. Allow these people to build the man pages.
This commit is contained in:
parent
d736260385
commit
df70fc4b4b
2 changed files with 69 additions and 0 deletions
|
@ -7,10 +7,13 @@ SPHINXOPTS := -q -c $(dir)
|
|||
SPHINXBUILD = sphinx-build
|
||||
DOCBUILDDIR := $(dir)/_build
|
||||
|
||||
prerst2man := python $(dir)/prerst2man.py
|
||||
|
||||
# Internal variables.
|
||||
ALLSPHINXOPTS := -d $(DOCBUILDDIR)/doctrees $(SPHINXOPTS) $(dir)
|
||||
|
||||
.PHONY: sphinx-html sphinx-man sphinx-texinfo sphinx-info
|
||||
.PHONY: rst2man
|
||||
|
||||
sphinx-html:
|
||||
$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(DOCBUILDDIR)/html
|
||||
|
@ -24,4 +27,8 @@ sphinx-texinfo:
|
|||
sphinx-info: sphinx-texinfo
|
||||
make -C $(DOCBUILDDIR)/texinfo info
|
||||
|
||||
# fallback target in case sphinx not installed
|
||||
rst2man:
|
||||
$(prerst2man) $(DOCBUILDDIR)/.. $(DOCBUILDDIR)/man
|
||||
|
||||
CLEAN := $(CLEAN) $(DOCBUILDDIR)
|
||||
|
|
62
doc/prerst2man.py
Normal file
62
doc/prerst2man.py
Normal file
|
@ -0,0 +1,62 @@
|
|||
from sys import argv
|
||||
from datetime import date
|
||||
from os.path import dirname, isdir
|
||||
from os import makedirs, system
|
||||
import re
|
||||
|
||||
sourcedir = argv[1]
|
||||
outdir = argv[2]
|
||||
|
||||
if not isdir(outdir):
|
||||
makedirs(outdir, 0755)
|
||||
|
||||
execfile(sourcedir + "/conf.py")
|
||||
|
||||
|
||||
def header(file, startdocname, command, description, authors, section):
|
||||
file.write("""
|
||||
{0:s}
|
||||
{1:s}
|
||||
{2:s}
|
||||
|
||||
:Date: {3:s}
|
||||
:Version: {4:s}
|
||||
:Manual section: {5:d}
|
||||
:Manual group: {6:s}
|
||||
|
||||
""".format(
|
||||
'-' * len(description),
|
||||
description,
|
||||
'-' * len(description),
|
||||
date.today().isoformat(), release, section, project))
|
||||
|
||||
blankre = re.compile("^\s*$")
|
||||
for page in man_pages:
|
||||
outdirname = outdir + '/' + dirname(page[0])
|
||||
if not isdir(outdirname):
|
||||
makedirs(outdirname, 0755)
|
||||
filename = outdir + '/' + page[0] + '.rst'
|
||||
outfile = open(filename, 'w')
|
||||
infile = open(sourcedir + '/' + page[0] + '.rst', 'r')
|
||||
|
||||
# this is a crude hack. We look for the first blank line, and
|
||||
# insert the rst2man header there.
|
||||
#
|
||||
# XXX consider really parsing input
|
||||
|
||||
count = 0
|
||||
lines = infile.readlines()
|
||||
for line in lines:
|
||||
outfile.write(line)
|
||||
if (blankre.match(line)):
|
||||
break
|
||||
count = count + 1
|
||||
|
||||
del lines[0:count + 1]
|
||||
|
||||
header(outfile, *page)
|
||||
|
||||
outfile.write("".join(lines))
|
||||
outfile.close()
|
||||
|
||||
os.system('set -x; rst2man {0} {1}'.format(filename, outdir + '/' + page[0] + '.' + str(page[4])))
|
Loading…
Reference in a new issue