summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorg Brandl <georg@python.org>2011-10-07 12:16:40 +0200
committerGeorg Brandl <georg@python.org>2011-10-07 12:16:40 +0200
commit39f990b9666b9814247fbcd165f53015afe2cd0a (patch)
treefdd12a8d0f66f3640ba188ed277a66702632ca92
parent531071ecdc143e58e6256e3c3d677e045481c516 (diff)
downloadsphinx-39f990b9666b9814247fbcd165f53015afe2cd0a.tar.gz
Optionally create a full quickstart project in apidoc.
-rw-r--r--sphinx/apidoc.py61
-rw-r--r--sphinx/quickstart.py15
2 files changed, 63 insertions, 13 deletions
diff --git a/sphinx/apidoc.py b/sphinx/apidoc.py
index f988957e..96159ba7 100644
--- a/sphinx/apidoc.py
+++ b/sphinx/apidoc.py
@@ -41,7 +41,7 @@ def makename(package, module):
def write_file(name, text, opts):
"""Write the output file for module/package <name>."""
- fname = path.join(opts.destdir, "%s.%s" % (name, opts.suffix))
+ fname = path.join(opts.destdir, '%s.%s' % (name, opts.suffix))
if opts.dryrun:
print 'Would create file %s.' % fname
return
@@ -106,7 +106,7 @@ def create_package_file(root, master_package, subroot, py_files, opts, subs):
write_file(makename(master_package, subroot), text, opts)
-def create_modules_toc_file(master_package, modules, opts, name='modules'):
+def create_modules_toc_file(modules, opts, name='modules'):
"""
Create the module's index.
"""
@@ -186,9 +186,8 @@ def recurse_tree(rootpath, excludes, opts):
create_module_file(package_name, module, opts)
toc.append(makename(package_name, module))
- # create the module's index
- if not opts.notoc:
- create_modules_toc_file(package_name, toc, opts)
+ return toc
+
def normalize_excludes(rootpath, excludes):
"""
@@ -246,23 +245,65 @@ Note: By default this script will not overwrite already created files.""")
help='Run the script without creating files')
parser.add_option('-T', '--no-toc', action='store_true', dest='notoc',
help='Don\'t create a table of contents file')
- parser.add_option('-H', '--doc-header', action='store', dest='header',
- help='Documentation header (default: Project)',
- default='Project')
parser.add_option('-s', '--suffix', action='store', dest='suffix',
help='file suffix (default: rst)', default='rst')
+ parser.add_option('-F', '--full', action='store_true', dest='full',
+ help='Generate a full project with sphinx-quickstart')
+ parser.add_option('-H', '--doc-project', action='store', dest='header',
+ help='Project name (default: root module name)')
+ parser.add_option('-A', '--doc-author', action='store', dest='author', type='str',
+ help='Project author(s), used when --full is given')
+ parser.add_option('-V', '--doc-version', action='store', dest='version',
+ help='Project version, used when --full is given')
+ parser.add_option('-R', '--doc-release', action='store', dest='release',
+ help='Project release, used when --full is given, '
+ 'defaults to --doc-version')
(opts, args) = parser.parse_args(argv[1:])
if not args:
parser.error('A package path is required.')
+
+ rootpath, excludes = args[0], args[1:]
if not opts.destdir:
parser.error('An output directory is required.')
- rootpath, excludes = args[0], args[1:]
+ if opts.header is None:
+ opts.header = rootpath
if not path.isdir(rootpath):
print >>sys.stderr, '%s is not a directory.' % rootpath
sys.exit(1)
if not path.isdir(opts.destdir):
os.makedirs(opts.destdir)
excludes = normalize_excludes(rootpath, excludes)
- recurse_tree(rootpath, excludes, opts)
+ modules = recurse_tree(rootpath, excludes, opts)
+ if opts.full:
+ from sphinx import quickstart as qs
+ modules.sort()
+ prev_module = ''
+ text = ''
+ for module in modules:
+ if module.startswith(prev_module + '.'):
+ continue
+ prev_module = module
+ text += ' %s\n' % module
+ d = dict(
+ path = opts.destdir,
+ sep = False,
+ dot = '_',
+ project = opts.header,
+ author = opts.author or 'Author',
+ version = opts.version or '',
+ release = opts.release or opts.version or '',
+ suffix = '.' + opts.suffix,
+ master = 'modules',
+ epub = True,
+ ext_autodoc = True,
+ makefile = True,
+ batchfile = True,
+ mastertocmaxdepth = opts.maxdepth,
+ mastertoctree = text,
+ )
+ qs.generate(d, silent=True)
+ print 'Creating quickstart project and Makefile.'
+ elif not opts.notoc:
+ create_modules_toc_file(modules, opts)
diff --git a/sphinx/quickstart.py b/sphinx/quickstart.py
index a91fd3f2..b85579ca 100644
--- a/sphinx/quickstart.py
+++ b/sphinx/quickstart.py
@@ -344,7 +344,9 @@ Welcome to %(project)s's documentation!
Contents:
.. toctree::
- :maxdepth: 2
+ :maxdepth: %(mastertocmaxdepth)s
+
+%(mastertoctree)s
Indices and tables
==================
@@ -946,11 +948,16 @@ directly.'''
'y', boolean)
-def generate(d):
+def generate(d, silent=False):
"""Generate project based on values in *d*."""
texescape.init()
+ if 'mastertoctree' not in d:
+ d['mastertoctree'] = ''
+ if 'mastertocmaxdepth' not in d:
+ d['mastertocmaxdepth'] = 2
+
d['project_fn'] = make_filename(d['project'])
d['project_manpage'] = d['project_fn'].lower()
d['now'] = time.asctime()
@@ -993,7 +1000,7 @@ def generate(d):
conf_text = QUICKSTART_CONF % d
if d['epub']:
conf_text += EPUB_CONFIG % d
- if d['ext_intersphinx']:
+ if d.get('ext_intersphinx'):
conf_text += INTERSPHINX_CONFIG
f = open(path.join(srcdir, 'conf.py'), 'w', encoding='utf-8')
@@ -1020,6 +1027,8 @@ def generate(d):
f.write(BATCHFILE % d)
f.close()
+ if silent:
+ return
print
print bold('Finished: An initial directory structure has been created.')
print '''