62 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			1.9 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
 | 
						|
pypath = py.__pkg__.getpath()
 | 
						|
print "using pypath", pypath
 | 
						|
import os
 | 
						|
 | 
						|
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
 | 
						|
    errno = os.system(cmd)
 | 
						|
    assert not errno
 | 
						|
 | 
						|
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)
 | 
						|
 |