1
2
3 """ Paver Documentation Generator Tasks.
4
5 Copyright (c) 2011 The PyroScope Project <pyroscope.project@gmail.com>
6 """
7
8
9
10
11
12
13
14
15
16
17
18
19
20 import os
21 import re
22 import sys
23
24 from paver import easy
25
26 from pyrobase.paver import support
27
28
29 @easy.task
30 @easy.cmdopts([
31 ('docs-dir=', 'd', 'directory to put the api documentation in'),
32 ('includes=', 'i', 'list of additional packages'),
33 ('excludes=', 'x', 'list of packages to exclude'),
34 ])
37 "create documentation"
38 from epydoc import cli
39
40 easy.path('build').exists() or easy.path('build').makedirs()
41
42
43 docs_dir = easy.options.docs.get('docs_dir', 'build/apidocs')
44
45
46 (easy.path(docs_dir) / "epydoc.css").exists() and easy.path(docs_dir).rmtree()
47
48
49 try:
50 include_names = easy.options.docs.includes
51 except AttributeError:
52 include_names = []
53 else:
54 include_names = include_names.replace(',', ' ').split()
55
56
57 try:
58 exclude_names = easy.options.docs.excludes
59 except AttributeError:
60 exclude_names = []
61 else:
62 exclude_names = exclude_names.replace(',', ' ').split()
63
64 excludes = []
65 for pkg in exclude_names:
66 excludes.append("--exclude")
67 excludes.append('^' + re.escape(pkg))
68
69
70 sys_argv = sys.argv
71 try:
72 sys.argv = [
73 sys.argv[0] + "::epydoc",
74 "-v",
75 "--inheritance", "listed",
76 "--output", os.path.abspath(docs_dir),
77 "--name", "%s %s" % (easy.options.setup.name, easy.options.setup.version),
78 "--url", easy.options.setup.url,
79 "--graph", "umlclasstree",
80 ] + excludes + support.toplevel_packages() + include_names
81 sys.stderr.write("Running '%s'\n" % ("' '".join(sys.argv)))
82 cli.cli()
83 finally:
84 sys.argv = sys_argv
85