59 lines
1.8 KiB
Python
Executable File
59 lines
1.8 KiB
Python
Executable File
#!/usr/bin/env python
|
|
|
|
""" quick tool to get documentation + apigen docs generated
|
|
|
|
given a certain targetpath, apigen docs will be placed in 'apigen',
|
|
|
|
user can choose to only build either docs or apigen docs: in this case,
|
|
the navigation bar will be adjusted
|
|
"""
|
|
|
|
from _findpy import py
|
|
import py
|
|
pypath = py.__pkg__.getpath()
|
|
|
|
def run_tests(path, envvars='', args=''):
|
|
pytestpath = pypath.join('bin/py.test')
|
|
cmd = ('PYTHONPATH="%s" %s python "%s" %s "%s"' %
|
|
(pypath.dirpath(), envvars, pytestpath, args, path))
|
|
print cmd
|
|
py.process.cmdexec(cmd)
|
|
|
|
def build_apigen_docs(targetpath, testargs=''):
|
|
run_tests(pypath,
|
|
'APIGEN_TARGET="%s/apigen" APIGEN_DOCRELPATH="../"' % (
|
|
targetpath,),
|
|
'%s --apigen="%s/apigen/apigen.py"' % (testargs, pypath))
|
|
|
|
def build_docs(targetpath, testargs):
|
|
docpath = pypath.join('doc')
|
|
run_tests(docpath, '',
|
|
testargs + ' --forcegen --apigen="%s/apigen/apigen.py"' % (pypath,))
|
|
docpath.copy(targetpath)
|
|
|
|
def build_nav(targetpath, docs=True, api=True):
|
|
pass
|
|
|
|
def build(targetpath, docs=True, api=True, testargs=''):
|
|
targetpath.ensure(dir=True)
|
|
if docs:
|
|
print 'building docs'
|
|
build_docs(targetpath, testargs)
|
|
if api:
|
|
print 'building api'
|
|
build_apigen_docs(targetpath, testargs)
|
|
|
|
if __name__ == '__main__':
|
|
import sys
|
|
if len(sys.argv) == 1:
|
|
print 'usage: %s <targetdir> [options]'
|
|
print
|
|
print ' targetdir: a path to a directory (created if it doesn\'t'
|
|
print ' exist) where the docs are put'
|
|
print ' options: options passed to py.test when running the tests'
|
|
sys.exit(1)
|
|
targetpath = py.path.local(sys.argv[1])
|
|
args = ' '.join(sys.argv[2:])
|
|
build(targetpath, True, True, args)
|
|
|