56 lines
1.8 KiB
Python
56 lines
1.8 KiB
Python
|
""" run 'py.test --apigen=<this script>' to get documentation exported
|
||
|
|
||
|
exports to /tmp/output by default, set the environment variable
|
||
|
'APIGEN_TARGET' to override
|
||
|
"""
|
||
|
|
||
|
import os
|
||
|
import py
|
||
|
from py.__.apigen import htmlgen
|
||
|
from py.__.apigen import linker
|
||
|
from py.__.apigen import project
|
||
|
|
||
|
def import_pkgdir(pkgdir):
|
||
|
if pkgdir.check(dir=True):
|
||
|
return pkgdir.join('__init__.py').getpymodule()
|
||
|
else:
|
||
|
# XXX not sure if this is ever used normally...
|
||
|
return pkgdir.getpymodule()
|
||
|
|
||
|
def get_documentable_items(pkgdir):
|
||
|
rootmod = import_pkgdir(pkgdir)
|
||
|
if hasattr(rootmod, '__package__'):
|
||
|
return rootmod
|
||
|
# XXX fix non-initpkg situations(?)
|
||
|
return {}
|
||
|
|
||
|
def build(pkgdir, dsa):
|
||
|
l = linker.Linker()
|
||
|
proj = project.Project()
|
||
|
|
||
|
if 'APIGEN_TARGET' in os.environ:
|
||
|
targetdir = py.path.local(os.environ['APIGEN_TARGET'])
|
||
|
else:
|
||
|
targetdir = pkgdir.dirpath().join('apigen')
|
||
|
targetdir.ensure(dir=True)
|
||
|
|
||
|
all_names = dsa._get_names(filter=lambda x, y: True)
|
||
|
namespace_tree = htmlgen.create_namespace_tree(all_names)
|
||
|
apb = htmlgen.ApiPageBuilder(targetdir, l, dsa, pkgdir)
|
||
|
spb = htmlgen.SourcePageBuilder(targetdir, l, pkgdir)
|
||
|
|
||
|
ns_data = apb.prepare_namespace_pages(namespace_tree)
|
||
|
class_names = dsa.get_class_names()
|
||
|
class_data, method_data = apb.prepare_class_pages(namespace_tree,
|
||
|
class_names)
|
||
|
function_names = dsa.get_function_names()
|
||
|
func_data = apb.prepare_function_pages(namespace_tree, function_names)
|
||
|
source_data = spb.prepare_pages(pkgdir)
|
||
|
|
||
|
apb.build_namespace_pages(ns_data, proj)
|
||
|
apb.build_class_pages(class_data, proj)
|
||
|
apb.build_method_pages(method_data, proj)
|
||
|
apb.build_function_pages(func_data, proj)
|
||
|
spb.build_pages(source_data, proj, pkgdir)
|
||
|
|