Initial import to Tizen
[profile/ivi/python-pyOpenSSL.git] / doc / tools / custlib.py
1 # Generate custlib.tex, which is a site-specific library document.
2
3 # Phase I: list all the things that can be imported
4
5 import glob, os, sys, string
6 modules={}
7
8 for modname in sys.builtin_module_names:
9     modules[modname]=modname
10     
11 for dir in sys.path:
12     # Look for *.py files
13     filelist=glob.glob(os.path.join(dir, '*.py'))
14     for file in filelist: 
15         path, file = os.path.split(file)
16         base, ext=os.path.splitext(file)
17         modules[string.lower(base)]=base
18
19     # Look for shared library files
20     filelist=(glob.glob(os.path.join(dir, '*.so')) + 
21               glob.glob(os.path.join(dir, '*.sl')) +
22               glob.glob(os.path.join(dir, '*.o')) )
23     for file in filelist: 
24         path, file = os.path.split(file)
25         base, ext=os.path.splitext(file)
26         if base[-6:]=='module': base=base[:-6]
27         modules[string.lower(base)]=base
28
29 # Minor oddity: the types module is documented in libtypes2.tex
30 if modules.has_key('types'):
31     del modules['types'] ; modules['types2']=None
32
33 # Phase II: find all documentation files (lib*.tex)
34 #           and eliminate modules that don't have one.
35
36 docs={}
37 filelist=glob.glob('lib*.tex')
38 for file in filelist:
39     modname=file[3:-4]
40     docs[modname]=modname
41
42 mlist=modules.keys()
43 mlist=filter(lambda x, docs=docs: docs.has_key(x), mlist)
44 mlist.sort()
45 mlist=map(lambda x, docs=docs: docs[x], mlist)
46
47 modules=mlist
48
49 # Phase III: write custlib.tex
50
51 # Write the boilerplate
52 # XXX should be fancied up.  
53 print """\documentstyle[twoside,11pt,myformat]{report}
54 \\title{Python Library Reference}
55 \\input{boilerplate}
56 \\makeindex                     % tell \\index to actually write the .idx file
57 \\begin{document}
58 \\pagenumbering{roman}
59 \\maketitle
60 \\input{copyright}
61 \\begin{abstract}
62 \\noindent This is a customized version of the Python Library Reference.
63 \\end{abstract}
64 \\pagebreak
65 {\\parskip = 0mm \\tableofcontents}
66 \\pagebreak\\pagenumbering{arabic}"""
67     
68 for modname in mlist: 
69     print "\\input{lib%s}" % (modname,)
70     
71 # Write the end
72 print """\\input{custlib.ind}                   % Index
73 \\end{document}"""