1
0
mirror of https://github.com/ceph/ceph synced 2024-12-28 06:23:08 +00:00
ceph/man/conf.py
Patrick Donnelly 425cb9fbe1
doc/man: avoid file builtin to solve build error
Sphinx running with Python 3.X fails:

    # Sphinx version: 1.4.8
    # Python version: 3.5.2 (CPython)
    # Docutils version: 0.12 release
    # Jinja2 version: 2.8
    # Last messages:

    # Loaded extensions:
    Traceback (most recent call last):
      File "/usr/lib/python3.5/site-packages/sphinx/cmdline.py", line 243, in main
        opts.warningiserror, opts.tags, opts.verbosity, opts.jobs)
      File "/usr/lib/python3.5/site-packages/sphinx/application.py", line 137, in __init__
        confoverrides or {}, self.tags)
      File "/usr/lib/python3.5/site-packages/sphinx/config.py", line 287, in __init__
        execfile_(filename, config)
      File "/usr/lib/python3.5/site-packages/sphinx/util/pycompat.py", line 130, in execfile_
        exec_(code, _globals)
      File "conf.py", line 56, in <module>
      File "conf.py", line 47, in _get_manpages
      File "conf.py", line 12, in _get_description
    NameError: name 'file' is not defined

Signed-off-by: Patrick Donnelly <pdonnell@redhat.com>
2016-11-15 09:00:01 -05:00

60 lines
1.8 KiB
Python

import os
project = u'Ceph'
copyright = u'2010-2014, Inktank Storage, Inc. and contributors. Licensed under Creative Commons BY-SA'
version = 'dev'
release = 'dev'
exclude_patterns = ['**/.#*', '**/*~']
def _get_description(fname, base):
with open(fname) as f:
one = None
while True:
line = f.readline().rstrip('\n')
if not line:
continue
if line.startswith(':') and line.endswith(':'):
continue
one = line
break
two = f.readline().rstrip('\n')
three = f.readline().rstrip('\n')
assert one == three
assert all(c=='=' for c in one)
name, description = two.split('--', 1)
assert name.strip() == base
return description.strip()
def _get_manpages():
src_dir = os.path.dirname(__file__)
top_srcdir = os.path.dirname(src_dir)
man_dir = os.path.join(top_srcdir, 'doc', 'man')
sections = os.listdir(man_dir)
for section in sections:
section_dir = os.path.join(man_dir, section)
if not os.path.isdir(section_dir):
continue
for filename in os.listdir(section_dir):
base, ext = os.path.splitext(filename)
if ext != '.rst':
continue
if base == 'index':
continue
path = os.path.join(section_dir, filename)
description = _get_description(path, base)
yield (
os.path.join(section, base),
base,
description,
'',
section,
)
man_pages = list(_get_manpages())
# sphinx warns if no toc is found, so feed it with a random file
# which is also rendered in this run.
master_doc = '8/ceph'